我有Linux系统,我使用 CMake 编写程序使用 Clion IDE 。我在程序中有一部分,我想调试子进程 我从这个论坛上读到了一些话题,但我仍然不知道如何才能打开这个功能:
gdb debugging child process after fork (follow-fork-mode child configured)
How do I debug the child process after fork() in gdb?
我刚尝试将标记CMAKE_CXX_FLAGS_DEBUG
设置为set follow-fork-mode child
,但CMake给了我错误。
下面的屏幕截图包含用于编译和dbug我的程序的所有标志。
那么我必须设置这个功能的地方和地点。
.. :: EDIT :: ..
我相信这是好方法。我认为你的提示很有用,但我有下一个问题。在使用您的说明后,我的代码就崩溃了
pid_t newProcessForClient = fork();
声明是:
(gdb)设置follow-fork-mode子句[新进程31667]警告:文件 " /lib32/libthread_db-1.0.so"您的自动加载已被拒绝 `auto-load safe-path'设置为" $ debugdir:$ datadir / auto-load"。警告: 无法找到libthread_db匹配劣质的线程库,线程 调试将无法使用。 [切换到流程31667] 继续发出信号SIGABRT。
程序终止,信号SIGABRT,Aborted。该计划不再 存在。
答案 0 :(得分:4)
调试设置与cmake无关。 CMAKE_CXX_FLAGS_DEBUG指出编译器的调试标志。但是,您需要将 set follow-fork-mode child 告诉调试器。为此,您需要执行以下步骤:
在程序开头设置一个断点(即父程序,而不是子程序)
在调试器中启动程序。
命令 set auto-load safe-path / 应该根据gdb的documentation切换自动加载限制。