如何使用CLion调试派生的子进程

xtfmy6hx  于 2022-12-11  发布在  其他
关注(0)|答案(4)|浏览(268)

我正在用CLion的内部调试器(Linux上的gdb)调试一个Linux C程序。该程序派生了一个子进程,该进程应该在我设置的断点处挂起。但是,即使我在gdb面板中输入了set follow-fork-mode child,调试器也没有在那里停止。那么,我该如何用CLion实现这一点呢?

yfjy0ee7

yfjy0ee71#

我跟随了@MarkusParker发布的answer,但是我使用了set detach-on-fork off而不是set auto-load safe-path /来防止与子进程断开连接。
1.在程序(即父程序,而不是子程序)的开头设置断点。
1.在调试工具中启动程式。
1.转到clion中的调试器控制台(标签为gdb的选项卡),然后输入set follow-fork-mode childset detach-on-fork off
1.继续两柴。

mwg9r5ms

mwg9r5ms2#

使用调试器的GDB选项卡并输入:

set detach-on-fork off
set follow-fork-mode child

9q78igpj

9q78igpj3#

set detach-on-fork off会在框架中添加一个线程,但是你仍然不能控制子进程。并且Clion“将其中一个下级进程的退出视为调试会话的结束,即使其他进程仍在运行”。
我认为vscode也有同样的问题。

qnyhuwrf

qnyhuwrf4#

确保在fork之前设置set follow-fork-mode child

相关问题