我的程序使用 execvp 生成一个子线程以在 xterm 中运行另一个程序:
char *argv[] = {"xterm",
"-e",
"./anotherProgram",
0
};
execvp("xterm", argv);
我知道另一个程序正在运行,但在 gdb 中,“信息线程”没有显示它。如何附加子线程并调试它?谢谢。
最佳答案
也许您只需要使用 ps aux | grep anotherProgram
找到 child 的进程 ID 就足够了然后使用像这样的新 gdb 实例附加到它? gdb ./anotherProgram <pid>
如果没有,您可以像这样修补源代码并重新编译:
char *argv[] = {"xterm",
"-e",
"gdb",
"./anotherProgram",
0
};
execvp("xterm", argv);
我不知道有什么更简洁的方法来做到这一点。
关于c - 如何在gdb中附加一个子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723726/