我写了两个简单的程序:

int main(int ac, char **argv ) {
    execv( "/home/me/Desktop/execvtest2", argv );
}


int main(int ac, char **argv ) {
    execv( "/home/me/Desktop/execvtest1", argv );
}

我已经用它们编译了
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,因为它会挂起!?),但是我无法将调用移到"new"(因为exec替换了进程)劣等程序中。

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

干杯

最佳答案

您可以使用“catch”命令。
这将使您有机会提出一些突破点
执行后

关于c - 如何使gdb跟随execv?尽管 "follow-exec-mode"无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10671229/

10-11 04:09