如何让gdb跟随execv?尽管"跟随执行模式"不工作

roe*_*mer 8 c debugging gdb execv

我写了两个简单的程序:

int main(int ac, char **argv ) {
    execv( "/home/me/Desktop/execvtest2", argv );
}
Run Code Online (Sandbox Code Playgroud)

int main(int ac, char **argv ) {
    execv( "/home/me/Desktop/execvtest1", argv );
}
Run Code Online (Sandbox Code Playgroud)

我用gcc -g将它们编译成相应的输出文件.我使用gcc(Ubuntu/Linaro 4.4.4-14ubuntu5.1)4.4.5运行Ubuntu 10.10.

当我使用GNU gdb(GDB)7.2-ubuntu调试第一个程序时,我可以直到第一个execv语句,但随后这两个文件继续运行.即使我将follow-exec-mode设置为new,我也无法进入第二个程序.当我设置catch exec时,gdb会在每次调用execv时停止(某些如何没有第二个程序的链接源,并且我无法退出gdb,因为它有点挂起!?)但是我无法跳过调用"新"(作为exec替换过程)的劣质程序.

那么怎么做呢?必须有一种方法可以进入新的流程吗?难道我做错了什么?

干杯

dae*_*hee 6

你可以使用"catch"命令.这将使你有机会在你执行后提出一些断点