SES Tracer (Trace code execution and call stack.)

Discussion in 'RGSS3 Scripts (RMVX Ace)' started by Solistra, Apr 15, 2014.

  1. Solistra

    Solistra Veteran Veteran

    Likes Received:
    SES Tracer v1.5
    by Solistra and Enelvon
    This script provides a simple, customizable tracer which can be used as a debugger or information-gathering tool for Ruby code. By default, the output from the tracer shows a visual representation of the Ruby call stack with relevant information. This is primarily a scripting and debugging tool.

    Change Log
    • v1.5 (April 18th, 2014) - General bug fixes and API improvements.
    • v1.4 (April 17th, 2014) - Automatic tracing now accommodates singleton methods.
    • v1.3 (April 15th, 2014) - Enelvon added support for automatic method tracing.
    • v1.2 (April 11th, 2014) - Updated Tracer.start.
    • v1.1 (April 11th, 2014) - Minor API update.
    • v1.0 (April 11th, 2014) - Initial release.
    • Highly customizable tracing of Ruby code at run-time.
    • A default trace formatter displaying the call stack.
    • Allows setting of a conditional to filter trace operations.
    • Able to trace specified methods whenever they are run.
    The tracer may be started either through a REPL (such as the SES Console) or from a script call with the following:
    You may also supply your own block of code for the tracer to run by simply passing a proc or lambda object as the argument (or running the block directly on the method):
    SES::Tracer.start do |event, file, line, id, binding, class_name|  file.gsub!(/^{\d+}/, SES::Tracer.scripts[$1.to_i]) if file =~ /^{(\d+)}/  printf("%8s %s:%-4d %20s %-20s\n", event, file, line, id, class_name)end
    The tracer may be stopped through a REPL or from a script call with the following:
    As of v1.3, you can specify methods that will always invoke the tracer when run through the use of the TRACE_METHODS hash. Its keys are the names of classes and its values are symbols corresponding to methods within the class. By default it will cause command_355 of Game_Interpreter to be traced. This is the "Script..." event command, which (without the help of the Tracer) will produce frustrating errors that point back to the command_355 method itself.

    More detailed usage information is available from the source repository where the script is stored.

    This script is available from SES VX Ace.

    Place this script below the SES Core (v2.0) script (if you are using it) and all other custom scripts. This script does not require the SES Core (v2.0), but it is recommended.

    Credit and Thanks
    • Solistra
    • Enelvon
    Author's Notes
    This script is made available under the terms of the MIT Expat license. View this page for more information.
    Last edited by a moderator: Apr 27, 2014
  2. Solistra

    Solistra Veteran Veteran

    Likes Received:
    This is a version increase and feature addition notice.

    Enelvon has added the ability to automatically begin tracing of methods in specified classes. This feature was added as a customization option to the configuration area of the script. By default, the only automatically traced method is Game_Interpreter#command_355, which is the "Script..." event command. This command is run using eval and has a tendency to cause cryptic errors which refer back to the command itself -- thus its default inclusion.

    You may define your own methods to automatically trace very easily, as well. The configurable hash has a constant representing the desired class as the key with an array of methods to trace as the value. For example, if we also wanted to trace Game_BattlerBase#change_hp, we would use the following:

    TRACE_METHODS = {  Game_Interpreter => [:command_355],  Game_BattlerBase => [:change_hp]}
    Last edited by a moderator: Apr 17, 2014
  3. Solistra

    Solistra Veteran Veteran

    Likes Received:
    This is a (late) version increase notice. As of April 18th, 2014, the Tracer has been updated to version 1.5. This version includes bug fixes and general improvements to the Tracer, including the proper automatic tracing of singleton methods as well as instance methods.

Share This Page