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

Mbd*_*ded 8 c++ gdb cmake clion

我有Linux系统,我编写程序使用Clion IDE,使用CMake.我有一个部分我的程序,我想调试子进程 我从这个论坛阅读了一些主题,但我仍然不知道如何或在哪里,我可以打开这个功能:

fork之后的gdb调试子进程(跟随fork-mode子配置)

如何在gdb中的fork()之后调试子进程?

我只是尝试设置标志CMAKE_CXX_FLAGS_DEBUG ,set follow-fork-mode child但CMake给我错误.下面的屏幕截图包含用于编译和dbug我的程序的所有标志.那么我必须设置这个功能的地方和地点.

在此输入图像描述

..::编辑::..

我相信这是好方法.我认为你的提示很有用,但我有下一个问题.使用您的说明后,我的代码就会崩溃

pid_t newProcessForClient = fork();
Run Code Online (Sandbox Code Playgroud)

声明是:

(gdb)设置follow-fork-mode子句[新进程31667]警告:文件"/lib32/libthread_db-1.0.so"自动加载已被``auto-load safe-path'设置为"$ debugdir: $ DATADIR /自动加载".警告:无法找到libthread_db匹配劣质的线程库,线程调试将无法使用.[切换到过程31667]继续信号SIGABRT.

程序终止,信号SIGABRT,Aborted.该计划已不复存在.

Mar*_*ker 4

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

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

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

  3. 转到 clion 中的调试器控制台(带有标签gdb的选项卡)并输入set follow-fork-mode childset auto-load safe-path /
  4. 继续调试

根据 gdb 的文档,命令set auto-load safe-path /应该切换自动加载限制。