0

我有一个项目用代码块编译了一个可执行文件。我已修改编译链以使用 CMAKE。编译和执行效果很好。
问题是在崩溃后生成 coredump 时。我用 gdb 用命令分析它:gdb myapp --core=core.1222

如果我在生成可执行文件的计算机上运行 gdb,我会得到所有符号,我可以探索线程和局部变量。

问题是当我尝试在另一台计算机上运行 gdb 时,它无法获得任何符号。我收到以下警告: BFD: Warning: /home/.../core.1222 is truncated: expected core file size >= 307032064, found: 307027968 gdb 显示中的“信息线程”??而是函数名。

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

我已经比较了代码块和 cmake 使用的调用的 make 命令。除了选项 -o: 和 cmake 之外,还有很多相似之处

-o CMakeFiles/monappilcation.dir/home/.../main.cpp.o 

并使用代码块:

-o obj/Release/.../main.cpp.o

该命令nm -a正确显示所有符号。

我的问题是:

  • gdb 如何计算预期大小?
  • 如何使用 cmake 编译工具链检索符号?

欢迎您提出任何建议。

4

0 回答 0