如何使用 CMake 在调试器中将 follow-fork-mode 设置为子模式
How set follow-fork-mode as child in debugger using CMake
我有 Linux 系统,我使用 Clion IDE 编写程序,其中使用 CMake。我在程序中有一部分想要 调试子进程
我从这个论坛上读了一些主题,但我仍然不知道如何或在哪里可以打开这个功能:
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 给我错误。
下面的屏幕截图包含用于编译和调试我的程序的所有标志。
那么我必须在什么地方设置这个功能。
..::编辑::..
我认为这是个好方法。我认为你的提示很有用,但我有下一个问题。使用您的说明后,我的代码在线崩溃
pid_t newProcessForClient = fork();
声明为:
(gdb) set follow-fork-mode child [New process 31667] warning: File
"/lib32/libthread_db-1.0.so" auto-loading has been declined by your
`auto-load safe-path' set to "$debugdir:$datadir/auto-load". warning:
Unable to find libthread_db matching inferior's thread library, thread
debugging will not be available. [Switching to process 31667]
Continuing with signal SIGABRT.
Program terminated with signal SIGABRT, Aborted. The program no longer
exists.
调试设置与cmake无关。 CMAKE_CXX_FLAGS_DEBUG 说明编译器的调试标志。但是,您需要将 set follow-fork-mode child 告诉调试器。为此,您需要执行以下步骤:
在程序开始处设置断点(即父程序,不是子程序)
在调试器中启动程序。
- 在 clion 中转到调试器控制台(标签为 gdb 的选项卡)并输入 set follow-fork-mode child 和 设置自动加载安全路径/
- 继续调试
命令set auto-load safe-path /应该根据gdb的documentation来切换自动加载限制。
我有 Linux 系统,我使用 Clion IDE 编写程序,其中使用 CMake。我在程序中有一部分想要 调试子进程 我从这个论坛上读了一些主题,但我仍然不知道如何或在哪里可以打开这个功能:
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 给我错误。
下面的屏幕截图包含用于编译和调试我的程序的所有标志。
那么我必须在什么地方设置这个功能。
..::编辑::..
我认为这是个好方法。我认为你的提示很有用,但我有下一个问题。使用您的说明后,我的代码在线崩溃
pid_t newProcessForClient = fork();
声明为:
(gdb) set follow-fork-mode child [New process 31667] warning: File "/lib32/libthread_db-1.0.so" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load". warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available. [Switching to process 31667] Continuing with signal SIGABRT.
Program terminated with signal SIGABRT, Aborted. The program no longer exists.
调试设置与cmake无关。 CMAKE_CXX_FLAGS_DEBUG 说明编译器的调试标志。但是,您需要将 set follow-fork-mode child 告诉调试器。为此,您需要执行以下步骤:
在程序开始处设置断点(即父程序,不是子程序)
在调试器中启动程序。
- 在 clion 中转到调试器控制台(标签为 gdb 的选项卡)并输入 set follow-fork-mode child 和 设置自动加载安全路径/
- 继续调试
命令set auto-load safe-path /应该根据gdb的documentation来切换自动加载限制。