gpt4 book ai didi

c++ - 无法将gdb用于cmake生成的执行文件

转载 作者:行者123 更新时间:2023-12-02 10:30:42 25 4
gpt4 key购买 nike

要使用cmake调试C++代码,我有一个技巧,可以在源代码的根目录中的project (myProjectYY)文件的CMakeLists.txt行之前添加以下行。

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")

因此,在 cmakemake之后,我已经获得了可执行文件 mainYY,并且我可以简单地运行 gdb mainYY进行调试,因为我应该能够看到 mainYY.cpp的源代码。

我有2个单独的项目,其他项目已经是 cmakemake,即一个简单项目(即 myProject1)和一个复杂项目(即 myProject2)。对于 myProject1,上述技巧对我有用,即在我添加以上三行并再次重新执行 cmakemake以获取 main1之后,我可以通过简单地在 main1.cpp中执行 l来查看 gdb的源代码。

但是对于 myProject2,我也这样做,即我添加了上述3行并再次重新执行 cmakemake以获取 main2,但是在 gdb中没有 main2.cpp的源代码。也就是说, gdb main2首先给了我 Reading symbols from main2...(no debugging symbols found)...done。然后,如果我在 l中运行 gdb,则我有 No symbol table is loaded. Use the "file" command
myProject1myProject2之间存在这种差异的最可能原因是什么?我如何找出这些可能的原因,以及如何进行修复以便可以调试 myProject2

谢谢。

最佳答案

正如您提到的,myProject2是一个复杂的项目。某处可能有SET( CMAKE_BUILD_TYPE Release ... FORCE )。使用fgrep -R "CMAKE_BUILD_TYPE"进行检查,甚至更好的方法是,在任何地方删除此定义。
请改用cmake -DCMAKE_BUILD_TYPE=Debug

关于c++ - 无法将gdb用于cmake生成的执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62353198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com