相关疑难解决方法(0)

调试客户盒子上生成的核心文件

我们从客户的盒子上运行我们的软件获得核心文件.不幸的是因为我们总是使用-O2 进行编译而没有调试符号,这导致我们无法弄清楚它崩溃的原因,我们已经修改了构建,所以它们现在一起生成-g和-O2.然后,我们建议客户运行-g二进制文件,以便更容易调试.

我有几个问题:

  1. 从我们在Dev中运行的Linux发行版生成核心文件时会发生什么?堆栈跟踪是否有意义?
  2. 在Linux或Solaris上有没有可用于调试的好书?面向示例的东西会很棒.我正在寻找现实生活中的例子来弄清楚例行程序崩溃的原因以及作者如何找到解决方案.从中级到高级的更多东西会很好,因为我已经做了一段时间了.一些装配也会很好.

这是一个崩溃的例子,要求我们告诉客户获得-g ver.二进制文件:

Program terminated with signal 11, Segmentation fault.
#0  0xffffe410 in __kernel_vsyscall ()
(gdb) where
#0  0xffffe410 in __kernel_vsyscall ()
#1  0x00454ff1 in select () from /lib/libc.so.6
...
<omitted frames>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想解决一下为什么应用程序崩溃的原因 - 我怀疑它是内存损坏,但我不是100%肯定.

严格禁止远程调试.

谢谢

c++ linux debugging gdb

7
推荐指数
1
解决办法
9519
查看次数

标签 统计

c++ ×1

debugging ×1

gdb ×1

linux ×1