Chinaunix首页 | 论坛 | 博客
  • 博客访问: 25885
  • 博文数量: 4
  • 博客积分: 215
  • 博客等级: 二等列兵
  • 技术积分: 74
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-05 23:44
文章分类
文章存档

2006年(4)

我的朋友
最近访客

分类:

2006-09-05 17:28:45

名称使用 ActiveState Komodo 对 Perl 语言编写的程序 / CGI 脚本进行远程调试



--------------------------------------------------------------------------------
概要ActiveState Komodo 3.x 版本引入了远程调试功能,从而使 Komodo 强大的 GUI 调试环境能够应用在不同机器不同环境中的程序上,这对于很多不习惯于命令行环境调试或者需要调试复杂 CGI 脚本的 Perl 用户来说无疑是一个福音。下面就对使用 Komodo 远程调试 Perl 程序的步骤进行简要的介绍。



--------------------------------------------------------------------------------
远程调试一般 Perl 程序步骤如下:

配置本地机器
打开本地机器上的 ActiveState Komodo,选中 Edit/Preferences 菜单中的 Debugger,将 Debugger Connection Options 中的 Listen for debug connections on port 值改为 9000 (或任意空闲的本地端口号,默认值 0 表示自动检测并使用空闲端口),同时确认 Enable Debugger Proxy 处于未选中状态。选中 Debug/Listen for Remote Debugger...,点击 Debug/Listener Status,查看 Host port 同设置是否相同 (若前面的端口设置保持默认值 0,则此处的端口就是 Komodo 实际使用的端口),同时再次确认 Proxy Enabled 值为 No。

配置远程机器

准备调试用的库文件
登录远程机器,将本地机器上 Komodo 安装目录下的 dbgp/perllib 目录复制到远程机器的某个目录下 (如 home 目录)。要特别注意复制后目录的权限问题,必须保证复制后的目录可读。一个常见的问题是从 Windows 系统复制到 *nix 系统后目录的列表权消失,这需要手工改正。

设置调试用环境变量
在远程机器上将前面复制的 perllib 目录路径加到环境变量 PERL5LIB 的最前面,以保证使用正确的调试器。如远程机器运行的是 *nix 系统,且 perllib 目录的路径为 /home/me/perllib,则可用如下命令设置该环境变量:
        export PERL5LIB=/home/me/perllib:$PERL5LIB
若远程机器运行的是 Windows 系统,且 perllib 目录的路径为 C:\misc\perllib,则命令为:

        set PERL5LIB=C:\misc\perllib;%PERL5LIB%
另外还要设置远程机器上的 PERLDB_OPTS ,用于确定 Komodo 的网络地址,其格式为:

        PERLDB_OPTS=RemotePort=:
如本地机器的域名为 foo.bar.com,若 Komodo 监听端口为 9000,则设置命令如下:

        export PERLDB_OPTS="RemotePort=foo.bar.com:9000"        (*nix 系统)


        set PERLDB_OPTS=RemotePort=foo.bar.com:9000     (Windows 系统)
还有一个环境变量 DBGP_IDEKEY,在使用 Komodo 调试代理服务器时用于确定连接到哪个调试进程,如果不设置则默认其值同 USER 或 USERNAME 环境变量相同,一般不使用调试代理服务器,故无需设置该变量。


在远程机器上启动待调试的 Perl 程序
使用 -d 选项启动带调试的 Perl 程序:
        perl -d program_name.pl
也可以将该选项直接加到待调试程序的 shebang 头里去:

        #!/usr/bin/perl -d
        use strict
        ...

使用 Komodo 调试 Perl 程序
如果之前的设置正确,在远程机器上启动程序后本地机器的 Komodo 窗口里就会出现 New Remote Debugger Connection 对话框询问是否接受调试连接了 (可以通过将 Edit/Preferences/Debugger/When receiving a remote debugging connection 设为 Allow the connection 来始终接受传入的调试连接),选择 Yes 接受后即可开始调试。调试过程同单机时一样, 单步运行, 单步跟踪,不再赘述。



--------------------------------------------------------------------------------
远程调试 CGI 脚本远程机器上的 WWW 服务器以 Apache 为例,步骤如下:

配置本地机器
同前面调试一般程序的过程相同。

配置远程 Apache 服务器
首先确定 Web 服务器上已经能正常运行 Perl 编写的 CGI 脚本,然后按照前面调试一般程序的说明准备好远程调试所用的库文件。修改 Apache 的 httpd.conf 配置文件,在合适的位置加上以下几句:
        SetEnv PERL5LIB "/home/me/perllib"      # 假设为 *nix 系统,若服务器为 Windows 系统则改为相应的路径
        SetEnv PERLDB_OPTS "RemotePort=foo.bar.com:9000"
这几行命令需要 Apache 中 mod_env 模块的支持,故需要在前面载入 mod_env.so 模块。以 Debian 系统下用 dpkg 安装的 Apache 1.3 为例,可运行以下命令来载入该模块:

        apache-modconf apache enable mod_env
然后重新启动 Apache 即可。其他系统下的载入方法及细节请参考


修改 CGI 脚本
在 shebang 头中加入 -d 选项:
        #!/usr/bin/perl -d
        ...

启动 CGI 调试进程
使用浏览器访问远程机器上的 CGI 脚本,则本地机器上的 Komodo 窗口中会出现该脚本的内容,即可开始调试。 
阅读(2593) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~