【问题标题】:perl ptkdb follow into system callperl ptkdb 跟随系统调用
【发布时间】:2011-04-22 12:19:38
【问题描述】:

我正在为 Perl 运行 ptkdb 调试器。 我正在使用 system() 从脚本中运行脚本;功能。 但是我不可能进入系统调用,调试器只是跳过它。 如何让调试器真正调试系统调用中发生的事情?

【问题讨论】:

    标签: perl debugging system


    【解决方案1】:

    system() 派生一个进程并将其作为 shell 命令运行。 Perl 调试器不会从 Perl 父进程跟踪到派生的 shell 命令。

    您可以用来调试此部分的步骤:

    1) 你可以调试 shell 调用本身,它是否在做你期望它做的事情? (手动运行,从 strace/dtrace 运行)

    2) 您可以打印发送给它的任何变量。您的变量是否正确传递?

    3) 你可以检查命令的返回,看看它是否在做你想做的事。

    另外,你确定 system() 是你想要的吗?来自 perldoc 系统:

    这不是你想要的 捕获命令的输出,例如 你应该只使用反引号 或 qx//,如STRING 中所述 佩洛普。返回值 -1 表示 无法启动程序或 wait(2) 系统调用错误 (检查 $! 的原因)。

    【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2012-04-03
    • 1970-01-01
    • 2011-05-23
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2016-01-20
    相关资源
    最近更新 更多