如果我有一个程序 A,它execve用来运行程序 B。如果我正在调试程序 A,如何在程序 B 的主程序中设置断点?
在 execve 例程中的某个点之后,程序 B 将被加载到内存中。之后,我可以看到二进制文件中的符号以及它们已加载到的内存区域。然而,为了达到这一点,我只是逐步执行一些非常繁琐且容易出错的 execve 指令。
有没有更简单的方法呢?
如果我有一个程序 A,它execve用来运行程序 B。如果我正在调试程序 A,如何在程序 B 的主程序中设置断点?
在 execve 例程中的某个点之后,程序 B 将被加载到内存中。之后,我可以看到二进制文件中的符号以及它们已加载到的内存区域。然而,为了达到这一点,我只是逐步执行一些非常繁琐且容易出错的 execve 指令。
有没有更简单的方法呢?
有一个调试标志称为dbg.execs将其设置为 true 应在execv发生时停止执行。所以试试这个:
> e dbg.execs = true
看起来它适用于 Linux,但我无法在 OSX 上获得相同的行为。