2
0
mirror of https://github.com/rehlds/metamod-r.git synced 2025-01-30 15:37:55 +03:00
metamod-r/doc/txt/trace.txt
2016-07-04 12:07:29 +06:00

71 lines
2.5 KiB
Plaintext

TraceAPI plugin
=-=-=-=-=-=-=-=
This was originally intended as a (more or less) complete example of a
Metamod plugin. It catches _every_ call available to it (dll routines both
before and after the game, as well as engine functions both before and
after the engine).
Because it catches every routine, I figured I'd give it the ability to log
when given routines are called, so it became an "api tracing" plugin. :)
This can actually be useful for tracking the operation of the HL engine,
as well as that of a particular HL game mod.
It recognizes the following server cvars:
// Tracing debug levels; higher values log increasingly frequent routines.
// Currently 0-50. See "api_info.cpp" for the debug levels of various
// functions.
// Trace level for dllapi routines.
trace_dllapi
// Trace level for "new" dllapi routines.
trace_newapi
// Trace level for engine functions.
trace_engine
// Enable unlimited trace logging. By default (as of v1.06), it only
// logs _one_ trace message per second, to keep from overwhelming the
// server. Set to "1" to enable unlimited logging. (Default "0")
trace_unlimit
// General debug level, independent of trace levels. Not currently used.
trace_debug
and the following server commands:
// Enable tracing of a given routine, independent of "trace_*" level.
// See the list of routine names in "api_info.cpp". Case is insignificant.
trace set <APIroutine>
// Disable tracing of a given routine, iff previously enabled with "trace".
// Doesn't affect routines being logged via "trace_*" level.
trace unset <APIroutine>
// Show the routines being traced.
trace show
// List the various routines that can be traced.
trace list dllapi
trace list newapi
trace list engine
trace list all
// Prints out version/date/etc.
trace version
Note the information it logs on each routine invocation is, at the moment,
relatively minimal. I included information that seemed obvious (args for a
ClientCommand, etc), and I've added info for other routines as I've come
across a need. Most routines I still know too little about to log any
particular information (CreateBaseline, etc). Feel free to add information
that you're interested in to the log messages in the routines; the
examples should be pretty self-explanatory. I'd be interested in knowing
as well, for adding it to the distribution code.
--------------------------------------------------------------------------