Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于迁移到cmake编译链,gdb在分析coredump时未找到任何符号_Cmake_Gdb_Symbols_Coredump - Fatal编程技术网

由于迁移到cmake编译链,gdb在分析coredump时未找到任何符号

由于迁移到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,找到:

我有一个用代码块编译可执行文件的项目。我已经修改了编译链以使用CMAKE。编译和执行效果良好。
问题在于,当崩溃后生成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以外的所有计算机。多亏花时间解决我的问题,我被它挡住了。我在网上做了很多搜索,没有任何回应。