c - 如何在gdb中附加一个子进程?

标签 c multithreading

我的程序使用 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/

相关文章:

c - 如何保护编译器优化级别更改后出现不可预测行为的函数(C 编程)?

c - 从链表中给定位置删除一个元素

java - 在多线程环境中读取的值

c# - Thread.Sleep 阻塞并行执行任务

java - 所有这些默认线程都应该运行吗?它们能让我的 JVM 保持活力吗?

c++ - 在 Windows 中不使用 Unicode 有什么缺点?

c - 为什么要销毁 pthread_cond_t 和 pthread_mutex_t?

iOS Objective-c 同步

multithreading - 如何在 Rust 中访问外部线程局部全局变量?

c++ - getnameinfo 内存泄漏是否得到确认?