如何使用 CLion 调试分叉的子进程
How to debug a forked child process using CLion
我正在使用 CLion 的内部调试器(Linux 上的 gdb)调试 Linux C 程序。该程序分叉了一个应该在我设置的断点处暂停的子进程。但是即使我在 gdb 面板中输入 set follow-fork-mode child
,调试器也不会停在那里。那么我如何使用 CLion 实现这一目标呢?
确保在分叉前设置 set follow-fork-mode child
。
我遵循 posted by @MarkusParker, but instead of set auto-load safe-path /
I used set detach-on-fork off
以防止与子进程断开连接。这条指令对我有用:
在程序开始处设置一个断点(即父程序,而不是子程序)。
在调试器中启动程序。
转到 clion 中的调试器控制台(带有标签 gdb 的选项卡)并输入 set follow-fork-mode child
和 set detach-on-fork off
.
继续调试
使用调试器的 GDB 选项卡:
输入 set follow-fork-mode child 并关闭 detach-on-fork
根据这个 link debugger: Support multi-process targets
Clion 仍然不支持它。 set detach-on-fork off
会在框架中添加一个线程,但你仍然无法控制子进程。和克里昂
“将下级之一的退出视为调试会话的结束 even-though 其他人仍然 运行”。
我认为 vscode 也有同样的问题。
我正在使用 CLion 的内部调试器(Linux 上的 gdb)调试 Linux C 程序。该程序分叉了一个应该在我设置的断点处暂停的子进程。但是即使我在 gdb 面板中输入 set follow-fork-mode child
,调试器也不会停在那里。那么我如何使用 CLion 实现这一目标呢?
确保在分叉前设置 set follow-fork-mode child
。
我遵循 set auto-load safe-path /
I used set detach-on-fork off
以防止与子进程断开连接。这条指令对我有用:
在程序开始处设置一个断点(即父程序,而不是子程序)。
在调试器中启动程序。
转到 clion 中的调试器控制台(带有标签 gdb 的选项卡)并输入
set follow-fork-mode child
和set detach-on-fork off
.继续调试
使用调试器的 GDB 选项卡:
输入 set follow-fork-mode child 并关闭 detach-on-fork
根据这个 link debugger: Support multi-process targets
Clion 仍然不支持它。 set detach-on-fork off
会在框架中添加一个线程,但你仍然无法控制子进程。和克里昂
“将下级之一的退出视为调试会话的结束 even-though 其他人仍然 运行”。
我认为 vscode 也有同样的问题。