I'm curious about the strategies that others use for running more
complex applications in the debugger. A content management system for
example might require session data and user input in order to run it's
code, all of which gets processed along a journey through a large
stack. How can I do 'something' in a browser and then run that same
request in the debugger?
I see that Apache::DB does something similar where you can initiate a
request in a browser and then control it in the debugger. But what if
the app is not running mod_perl?
Thanks
Andrew
One way to cope with the task you described is to use a debugger
frontend such as EPIC. It allows you to set all the breakpoints
in source files beforehand in the IDE, then it takes care of
actually inserting those breakpoints at runtime whenever the right
.pm files are loaded. It also includes an embedded web server through
which the CGI scripts are executed (with the -d flag and PERLDB_OPTS
set up to make them call back the IDE).
It is also possible to execute CGI scripts in the real web server
and call back EPIC in a "remote debugging" configuration, but this
would require some trickier configuration. Generally, I only use
the debugger in a development environment, where the requirement
of letting all requests go through a custom web server is not
a big problem.
The usual scenario is to start this web server (or, as it is called
in Eclipse, a "debug launch configuration"), then issue the required
user interactions in the browser to reach the interesting state,
finally enable some breakpoints in the source code and repeat the
problematic request from the browser to make the debugger suspend.
Regards,
Jan Ploski
If the program is a CGI then you can wrap it such that it runs ptkdb and
remotes the debugger display to your screen via X. Then you invoke it
form a browser and the debugger runs on the server invocation itself.
Look up ptkdb documentation.
--
Peter Scott
http://www.perlmedic.com/
http://www.perldebugged.com/
http://www.informit.com/store/product.aspx?isbn=0137001274