我有Linux系统,并且我使用Clion IDE编写程序,该程序使用CMake。我在程序中有一部分想调试子进程,我从这个论坛上读了一些话题,但是我仍然不知道如何或在什么地方可以打开此功能:
分叉后gdb调试子进程(配置了fork-fork-mode子进程)
我只是试图将标志设置CMAKE_CXX_FLAGS_DEBUG
为,set follow-fork-mode child
但是CMake给了我错误。下面的屏幕快照带有所有标志,这些标志用于编译和调试我的程序。所以我必须在什么地方设置此功能。
..::编辑::..
我相信这是个好方法。我认为您的小贴士很有用,但我还有另一个问题。使用您的指令后,我的代码在线崩溃
pid_t newProcessForClient = fork();
声明是:
(gdb)设置跟随叉模式子项[New process 31667]警告:“自动加载安全路径”设置为“ $ debugdir”已拒绝文件“ /lib32/libthread_db-1.0.so”的自动加载: $ datadir /自动加载”。警告:找不到与下一个线程库匹配的libthread_db,线程调试将不可用。[切换到过程31667]继续信号SIGABRT。
程序以信号SIGABRT终止,异常终止。该程序不再存在。
调试设置与cmake无关。CMAKE_CXX_FLAGS_DEBUG声明编译器的调试标志。但是,您需要将设置后叉模式子项告知调试器。为此,您需要执行以下步骤:
在程序的开始处设置一个断点(即父程序,而不是子程序)
在调试器中启动程序。
根据gdb的文档,应该使用命令set auto-load safe-path /来切换自动加载限制。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句