2011-06-20 25 views
1

考虑一个字段大小写,我们将不提供使用gdb标记构建的图像。 现在有任何链接或文档或任何类似的东西,这有助于 调试字段中生成的核心文件(请记住,图像不是用-g gdb标志构建的)。调试不带gdb标记的图像的核心文件-g

一些指针会非常有用!

+0

据我所知,您必须在二进制文件中启用符号才能调试核心文件。请记住,核心文件只是应用程序在执行点X处的内存布局。您必须包含该应用程序,因为这是gdb如何可以知道堆栈中的帧以及这些行映射到的符号。 – Suroot

回答

0

您需要使用-g构建可执行文件(您也可以指定-O)。然后您发布可执行文件的剥离版本(man strip)。任何核心文件都将与任一版本兼容。

+1

如果原始图像不是用-g构建的,通常可以用-g重建图像(从代码到编译器系统头文件等所有内容都保持不变),并从构建的映像中分析核心文件没有-g使用用-g构建的图像 – nos

3

更好的解决方案是始终使用-g(至少对于GCC不抑制优化)构建程序。然后,您可以使用objcopy创建separate debug files,该产品不附带该产品,并剥离了您运输的二进制文件。

然后,当您从开发机器上的字段加载核心时,调试符号出现时,GDB将从单独的文件加载调试符号。在现场,调试符号文件不存在,因为您没有发货,所以调试信息不​​可用。

如果适用,您还可以使用符号文件创建DVD或USB密钥,以便技术人员可以使用它们来带符号以在现场分析核心文件。