如何在gdb中附加子进程?

时间:2013-03-30 21:30:57

标签: c multithreading

我的程序使用execvp生成子线程,以在xterm中运行另一个程序:

char *argv[] = {"xterm",
        "-e",
                "./anotherProgram",
        0
};

execvp("xterm", argv);

我知道另一个程序正在运行但是在gdb中,“info thread”没有显示它。如何附加子线程并进行调试?感谢。

1 个答案:

答案 0 :(得分:0)

也许只使用ps aux | grep anotherProgram找到孩子的进程ID然后使用像这样的新gdb实例附加到它就足够了? gdb ./anotherProgram <pid>

如果没有,你可以像这样修改源代码并重新编译:

char *argv[] = {"xterm",
                "-e",
                "gdb",
                "./anotherProgram",
                0
};

execvp("xterm", argv);

我不知道更清洁的方法。