【发布时间】:2011-04-22 12:19:38
【问题描述】:
我正在为 Perl 运行 ptkdb 调试器。 我正在使用 system() 从脚本中运行脚本;功能。 但是我不可能进入系统调用,调试器只是跳过它。 如何让调试器真正调试系统调用中发生的事情?
【问题讨论】:
我正在为 Perl 运行 ptkdb 调试器。 我正在使用 system() 从脚本中运行脚本;功能。 但是我不可能进入系统调用,调试器只是跳过它。 如何让调试器真正调试系统调用中发生的事情?
【问题讨论】:
system() 派生一个进程并将其作为 shell 命令运行。 Perl 调试器不会从 Perl 父进程跟踪到派生的 shell 命令。
您可以用来调试此部分的步骤:
1) 你可以调试 shell 调用本身,它是否在做你期望它做的事情? (手动运行,从 strace/dtrace 运行)
2) 您可以打印发送给它的任何变量。您的变量是否正确传递?
3) 你可以检查命令的返回,看看它是否在做你想做的事。
另外,你确定 system() 是你想要的吗?来自 perldoc 系统:
这不是你想要的 捕获命令的输出,例如 你应该只使用反引号 或 qx//,如
STRING中所述 佩洛普。返回值 -1 表示 无法启动程序或 wait(2) 系统调用错误 (检查 $! 的原因)。
【讨论】: