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.
On Sat, Nov 28, 2009 at 04:05:35PM -0500, Andrew Brosnan wrote:
> 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?