Class Debug.Inspect
- Description
Allows for interactive debugging and live data structure inspection in both single- and multi-threaded programs. Creates an independent background thread that every pollinterval will show a list of running threads. Optionally, a triggersignal can be specified which allows the dump to be triggered by a signal.
Example: In the program you'd like to inspect, insert the following one-liner:
Debug.Inspect("/tmp/test.pike");
Then start the program and keep it running. Next you create a /tmp/test.pike with the following content:
void create() { werror("Only once per modification of test.pike\n"); } int main() { werror("This will run every iteration\n"); werror("By returning 1 here, we disable the stacktrace dumps\n"); return 0; } void _destruct() { werror("_destruct() runs just as often as create()\n"); }
Whenever you edit /tmp/test.pike, it will automatically reload the file.
- Variable
_callback
string
|function
(void
:void
) Debug.Inspect._callback- Description
Either the callback function which is invoked on each iteration, or the name of a file which contains a class which is (re)compiled automatically and called on each iteration.
- See also
- Variable
_loopthread
Thread.Thread
Debug.Inspect._loopthread- Description
The inspect-thread. It will not appear in the displayed thread-list.
- Variable
pollinterval
int
Debug.Inspect.pollinterval- Description
The polling interval in seconds, defaults to 4.
- Variable
triggersignal
int
Debug.Inspect.triggersignal- Description
If assigned to, it will allow the diagnostics inspection to be triggered by this signal.
- Method
create
Debug.Inspect Debug.Inspect(
string
|function
(void
:void
)|void
cb
)- Description
Starts up the background thread.
- Parameter
cb
Specifies either the callback function which is invoked on each iteration, or the name of a file which contains a class which is (re)compiled automatically with an optional
main()
method, which will be called on each iteration. If themain()
method returns 0, new stacktraces will be dumped every iteration; if it returns 1, stacktrace dumping will be suppressed.- Note
The compilation and the running of the callback is guarded by a catch(), so that failures (to compile) in that section will not interfere with the running program.
- Note
If the list of running threads did not change, displaying the list again will be suppressed.
- See also
triggersignal, pollinterval, _loopthread, _callback, Debug.globals