MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 1 | SYNOPSIS |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 2 | #include <trace.h> |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 3 | |
Zesstra | d59c389 | 2019-11-28 20:53:39 +0100 | [diff] [blame] | 4 | int trace(int traceflags) |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 5 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 6 | DESCRIPTION |
| 7 | Sets the trace flags and returns the old trace flags. When |
| 8 | tracing is on, a lot of information is printed during |
| 9 | execution and too much output can crash your connection or |
| 10 | even the whole driver. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 11 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 12 | Tracing is done on a per-connection basis: each interactive(!) |
| 13 | user may specifiy their own tracelevel and -prefix. Each gets the |
| 14 | traceoutput for just the code executed during the evaluation |
| 15 | of the commands he entered. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 16 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 17 | The trace bits are: |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 18 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 19 | TRACE_NOTHING ( 0): stop tracing. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 20 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 21 | TRACE_CALL ( 1): trace all calls to lfuns. |
| 22 | TRACE_CALL_OTHER ( 2): trace call_others()s. |
| 23 | TRACE_RETURN ( 4): trace function returns. |
| 24 | TRACE_ARGS ( 8): print function arguments and results. |
| 25 | TRACE_EXEC ( 16): trace all executed instructions. |
| 26 | TRACE_HEART_BEAT ( 32): trace heartbeat code. |
| 27 | TRACE_APPLY ( 64): trace driver applies. |
| 28 | TRACE_OBJNAME (128): print the object names. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 29 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 30 | TRACE_EXEC and TRACE_HEART_BEAT should be avoided as they cause |
| 31 | massive output! TRACE_OBJNAME should be avoided when you know |
| 32 | what you trace. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 33 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 34 | The master-lfun valid_trace() is called with ("trace", traceflags) |
| 35 | as argument to verify the use of this efun. |
| 36 | |
| 37 | |
| 38 | EXAMPLES |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 39 | object obj; |
| 40 | string prefix; |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 41 | obj = find_player("wessex"); |
| 42 | prefix = object_name(obj); |
| 43 | prefix = prefix[1..]; /* cut off the leading "/" */ |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 44 | traceprefix(prefix); |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 45 | /* From here on, only code in the object "std/player#69" |
| 46 | * will be traced. |
| 47 | */ |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 48 | trace(TRACE_CALL|TRACE_CALL_OTHER|TRACE_RETURN|TRACE_ARGS); |
| 49 | ... |
| 50 | trace(TRACE_NOTHING); |
| 51 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 52 | HISTORY |
| 53 | LDMud 3.2.9 passes the <traceflags> argument to the valid_trace() |
| 54 | apply as well. |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 55 | |
Zesstra | 715ec20 | 2025-07-09 22:18:31 +0200 | [diff] [blame] | 56 | SEE ALSO |
MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame] | 57 | traceprefix(E) |