I just checked in a debugging aid I created to be able to do some
live data inspection in running Pike programs (I used it to find the
cause of a deadlock in pgsql).

I'd appreciate feedback on the implementation and usability of Debug.Peek
(in Pike 8.1).

To get a rough impression of what it does, here's an excerpt out of the
documentation:

------------------------------------------------
Class Debug.Peek

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 signal.

Example: In the program you'd like to inspect, insert the following one-liner:

Debug.Peek("/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 destroy() {
 werror("destroy() runs just as often as create()\n");
}
Whenever you edit /tmp/test.pike, it will automatically reload the file.
------------------------------------------------
-- 
Stephen.

Reply via email to