如何使用CMake在调试器中将follow-fork-mode设置为child

时间:2015-12-06 19:46:34

标签: c++ cmake gdb clion

我有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我的程序的所有标志。 那么我必须设置这个功能的地方和地点。

enter image description here

.. :: 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。该计划不再   存在。

1 个答案:

答案 0 :(得分:4)

调试设置与cmake无关。 CMAKE_CXX_FLAGS_DEBUG指出编译器的调试标志。但是,您需要将 set follow-fork-mode child 告诉调试器。为此,您需要执行以下步骤:

  1. 在程序开头设置一个断点(即父程序,而不是子程序)

  2. 在调试器中启动程序。

  3. 转到clion中的调试器控制台(标签为 gdb 的选项卡)并输入 set follow-fork-mode child 设置自动加载安全 - 路径/
  4. 继续调试
  5. 命令 set auto-load safe-path / 应该根据gdb的documentation切换自动加载限制。