由于迁移到cmake编译链,gdb在分析coredump时未找到任何符号
我有一个用代码块编译可执行文件的项目。我已经修改了编译链以使用CMAKE。编译和执行效果良好。由于迁移到cmake编译链,gdb在分析coredump时未找到任何符号,cmake,gdb,symbols,coredump,Cmake,Gdb,Symbols,Coredump,我有一个用代码块编译可执行文件的项目。我已经修改了编译链以使用CMAKE。编译和执行效果良好。 问题在于,当崩溃后生成coredump时。我使用gdb命令分析它:gdbmyapp--core=core.1222 如果我在生成可执行文件的计算机上运行gdb,我将获得所有符号,并且可以探索线程和局部变量 问题是当我试图在另一台计算机上运行gdb时,它无法获得任何符号。我得到以下警告: BFD:Warning:/home/../core.1222被截断:预期的核心文件大小>=307032064,找到:
问题在于,当崩溃后生成coredump时。我使用gdb命令分析它:
gdbmyapp--core=core.1222
如果我在生成可执行文件的计算机上运行gdb,我将获得所有符号,并且可以探索线程和局部变量
问题是当我试图在另一台计算机上运行gdb时,它无法获得任何符号。我得到以下警告:
BFD:Warning:/home/../core.1222被截断:预期的核心文件大小>=307032064,找到:307027968
gdb显示中的“信息线程”??而不是函数名
My CMakeLists.txt包含:
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ../bin )
SET(CMAKE_USE_RELATIVE_PATHS ON)
SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(CMAKE_CXX_COMPILER g++)
SET(CMAKE_BUILD_STRIP FALSE)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
我比较了codeblocks和cmake使用的调用make命令。除-o选项外,还有许多类似的选项:
与cmake
-o CMakeFiles/monappilcation.dir/home/.../main.cpp.o
并使用代码块:
-o obj/Release/.../main.cpp.o
命令nm-a
正确显示所有符号
我的问题是:
- gdb如何计算预期大小
- 如何使用cmake编译工具链检索符号
欢迎您的任何建议。所有的东西都在计算机A上工作。从您的信息中不清楚当您在计算机B上获得核心转储并尝试在计算机B上分析时,您的问题是否发生了,或者你是否试着用A上的GDB分析B上产生的核。二进制是在计算机A上产生的。它在产生核的计算机B上执行。当我在计算机A上分析内核时,一切正常。但当我尝试在另一台计算机上分析时,它不起作用,gdb没有找到符号并警告预期的大小。你们仍然不清楚:什么是另一台计算机?是计算机
C
(即非A
和非B
)?很抱歉,不清楚,“另一台计算机”是除计算机A以外的所有计算机。多亏花时间解决我的问题,我被它挡住了。我在网上做了很多搜索,没有任何回应。