【发布时间】:2020-10-02 19:08:38
【问题描述】:
要使用cmake 调试C++ 代码,我有一个技巧,即在源代码根目录中CMakeLists.txt 文件的project (myProjectYY) 行之前添加以下行。
set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
所以,在cmake和make之后,我得到了mainYY的可执行文件,我可以简单地运行gdb mainYY进行调试,因为我应该可以看到mainYY.cpp的源代码.
我有 2 个单独的项目,它们已经被其他人称为 cmake 和 make,即一个简单的项目(即myProject1)和一个复杂的项目(即myProject2)。对于myProject1,上面的技巧对我有用,即在我添加了上面的3行并再次重新执行cmake和make以获得main1之后,我可以看到main1.cpp的源代码通过只需在gdb 中执行l。
但是对于myProject2,我也是这样做的,即我添加了上面的3行并再次重新执行cmake和make以获得main2,但是在gdb中没有源代码main2.cpp。也就是gdb main2首先给了我Reading symbols from main2...(no debugging symbols found)...done。然后如果我在gdb 中运行l,我就有No symbol table is loaded. Use the "file" command。
myProject1 和 myProject2 之间存在这种差异的最可能原因是什么?如何找出这些可能的原因,以及如何进行修复以便可以为myProject2 进行调试?
谢谢。
【问题讨论】:
-
请发minimal reproducible example,你可能在某处打错了