我写了两个简单的程序:
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,因为它有点挂起!?),但我不能跨过调用“新”(因为 exec 替换进程)劣质程序。
那么如何做到这一点呢?一定有办法进入新流程吧?难道我做错了什么?
干杯