Komodo can debug Perl programs locally or remotely, including debugging in
CGI and mod_perl environments. The instructions below describe how to configure
Komodo and Perl for debugging. For general information about using the Komodo
debugger, see Komodo Debugger
Functions.
Debugger commands can be accessed from the Debug menu, by
shortcut keys, or from the Debug Toolbar. For a summary of debugger commands, see
the Debugger
Command List.
|
|
To specify which Perl interpreter Komodo uses to debug and run
Perl programs:
- On the Edit menu, click Preferences.
- In the Preferences dialog box under Languages, click
Perl. Komodo searches for Perl interpreters on your system
and displays them in the drop-down list.
- If the preferred interpreter is in this list, click to select it. If not,
click Browse to locate it.
- Click OK.
To start a local Perl debugging session:
On the Debug menu or Debug Toolbar, click
Go/Continue or Step In to invoke the debugging
session. See Komodo
Debugger Functions for full instructions on using Komodo's debugging
functionality.
When debugging a Perl program remotely, the program is executed on the remote
system and the debug output is sent to Komodo. Komodo controls the debugging
session (e.g. stepping and breakpoints) once the session starts on the remote
system.
Perl remote debugging works on any system that can run the version of
perl5db.pl distributed with Komodo. ActivePerl and most
other distributions of Perl (version 5.6 or greater) will work.
Note: If you have the ActiveState Perl Development Kit (PDK)
installed, follow the instructions for PDK users to disable the PDK debugger before
continuing.
To debug Perl programs remotely:
Step One: Configure the Remote Machine
- Copy Komodo's perl debugger and its associated libraries to the
remote machine by copying the entire dbgp/perllib sub-directory
of the Komodo installation to the new machine, or download a package
from the Komodo
Remote Debugging page.
Note: Do not copy perl5db.pl to the standard "lib"
directory of the Perl installation on the remote machine, as this will overwrite
the standard perl5db.pl file.
- On the remote machine, set the
PERL5LIB environment
variable to the location of the new perl5db.pl and its
libraries. For example, if the remote machine is running Windows and
perllib directory was copied to C:\misc\perllib, set the
variable as follows:
set PERL5LIB=C:\misc\perllib
For example, if the remote machine is running Linux or Mac OS X and
perllib was copied to the /home/me/perl/komodo_perl_debugging
directory, set the variable as follows:
export PERL5LIB=/home/me/perl/komodo_perl_debugging/perllib
- On the remote machine, set the
PERLDB_OPTS and
DBGP_IDEKEY variables. This tells the Perl interpreter on the
remote machine where to connect to Komodo or the DBGP Proxy and how to
identify itself.
PERLDB_OPTS=RemotePort=<hostname>:<port>
DBGP_IDEKEY=<ide_key>
- The port number must match the port number specified
in Edit|Preferences|Debugger. Click
Debug|Listener Status to check the current port.
- Replace
<hostname> with the name or IP address of
the machine running Komodo.
- If DBGP_IDEKEY is unset, the USER or USERNAME environment variable is
used as the IDE Key.
- The variable definitions must be on one line.
For example:
Windows 2000, NT, XP
set PERLDB_OPTS=RemotePort=127.0.0.1:9000
set DBGP_IDEKEY=jdoe
Windows Me
Use the MSCONFIG utility (Start|Run|MSCONFIG). Select the
Environment tab, and create a new variable with the Variable
Name of PERLDB_OPTS , and the Variable Value of
RemotePort=127.0.0.1:9000 .
Linux and Mac OS X Systems
export PERLDB_OPTS="RemotePort=127.0.0.1:9000"
export DBGP_IDEKEY="jdoe"
Step Two: Listen for Debugger Connections
In Komodo, on the Debug menu, click Listen for
Debugger Connections.
Step Three: Start the Perl Program on the Remote Machine
Start the debugging process using the "-d" flag:
perl -d program_name.pl
A Perl Debug tab is displayed in Komodo.
Step Four: Debug the Perl Program using Komodo
Click Step In, or Go/Continue to run to the
first breakpoint. See Komodo
Debugger Functions for full instructions on using Komodo's debugging
functionality.
If you have installed the ActiveState Perl Development Kit (PDK) on the
remote machine, the system may be configured to use the PDK debugger when a Perl
debug session (perl -d ) is launched. To use Komodo's debugger, disable the PDK debugger on
the remote machine first. If necessary, you can re-enable the PDK debugger on the
remote machine later.
To disable the PDK debugger on the remote machine, perform one of the
following procedures:
Option 1:
At the command shell, enter the following command:
Windows
set PERL5DB=BEGIN { require 'perl5db.pl'; }
set PERLDB_OPTS=
Linux
export PERLDB_OPTS=
To re-enable the PDK debugger, set the PERL5DB variable
to an empty string.
Option 2: (Windows)
- Open System Properties:
- On Windows 9x/NT/2000, right-click the My
Computer icon and select Properties.
- On Windows XP, click Start | Control
Panel | System
- Click the Advanced tab.
- Click Environment Variables.
- In the System variables section, click New.
- Set the Variable Name field to
PERL5DB .
- Set the Variable Value field to
BEGIN { require
'perl5db.pl'} .
- Select the
PERLDB_OPTS variable, click Edit.
- Delete the contents of the Variable Value field.
- Click OK three times to exit.
These changes take effect in new Command Prompt windows. To re-enable
the PDK debugger, delete the PERL5DB variable, and change
the PERLDB_OPTS variable back to it's original value.
Debugging CGI programs on live production servers can seriously impair
performance. We recommend using a test server for CGI debugging. Instructions
for configuring Microsoft IIS and Apache servers are shown below;
for other web servers, use these examples and the web server software
documentation as a guide for modifying the server environment.
The settings and paths listed are examples only. Substitute these with the
specific paths, hostnames and port numbers of your server as necessary
Ensure that Perl CGI scripts are operating correctly on the Apache server
before proceeding with CGI debugger configuration. If you are running Apache
under Windows, disable the ScriptInterpreterSource registry in the
httpd.conf file. Use a stand-alone Perl interpreter for remote debugging.
After the configuration is complete, debug programs as follows:
- In Komodo, on the Debug menu, click Listen
for Debugger Connections.
- Using a web browser, access your CGI script.
- A Perl Debug tab is displayed in Komodo. See Komodo Debugger Functions for full
instructions on using Komodo's debugging functionality.
Debugging mod_perl handlers is similar to debugging any Perl program
remotely (see Debugging Perl
Remotely to familiarize yourself with the terminology). Debugging
mod_perl is different in that you'll typically invoke the code
indirectly with a web browser, and that the Perl code is
running inside an Apache web server.
To configure Komodo debugging in mod_perl:
- Copy the entire dbgp/perllib sub-directory of the Komodo
installation to a convenient directory on the server, or download and
unpack the Perl Remote Debugging package from the Komodo
Remote Debugging page. If you are running Apache on your local
workstation, you can use Komodo's copy directly (e.g.
<Komodo-install-dir>/lib/support/dbgp/perllib ) for the
following steps. Note: Do not copy
perl5db.pl to the standard "lib" directory of the Perl
installation on the remote machine, as this will overwrite the
standard perl5db.pl file.
- In the directory containing perl5db.pl, create a new
directory called Apache. For example:
$ cd Komodo/lib/support/dbgp/perllib
$ mkdir Apache
- Create a symlink or shortcut to perl5db.pl within the new
Apache directory. For example:
$ cd Apache
$ ln -s ../perl5db.pl .
- Install the Apache::DB perl module on the server:
$ cpan Apache::DB
- Add the following snippet to your httpd.conf file
(replace "/path/to/dbgp/perllib" with the full path to the
directory containing perl5db.pl):
<Perl>
use ModPerl::Registry;
use lib qw(/path/to/dbgp/perllib);
$ENV{PERLDB_OPTS} = "RemotePort=localhost:9000 LogFile=stderr";
use Apache::DB ();
Apache::DB->init;
</Perl>
Make sure that RemotePort is set to the hostname and port
Komodo using to listen for debugger connections (see the PERLDB_OPTS setting in
the "Configure the Remote Machine" section of Debugging Perl Remotely).
- You will probably already have a
<Location> section in
httpd.conf (or apache.conf) for your perl scripts. Add the
following line to that section:
PerlFixupHandler Apache::DB
For example:
<Location /perl-bin>
SetHandler perl-script
PerlHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
PerlFixupHandler Apache::DB
</Location>
- Restart Apache in debug mode (e.g.
apache -X ), and
open the page you wish to debug in a browser.
|