分析故障核心转储(gdb)

时间:2018-06-06 04:30:58

标签: c linux gdb coredump

我在imax6q自定义硬件设计上运行基于Linux的应用程序时遇到了分段错误。我使用Linux GDB回溯了核心转储,然后您可以看到这些核心转储。

我正在使用的内核--Linux-boundary 4.1.15

Seg fault Core dump 1

Program terminated with signal SIGSEGV, Segmentation fault.
#0 gcoTEXTURE_BindTextureEx (Texture=0x263c6c4, Target=Target@entry=0, 
Sampler=1, Sampler@entry=0, Info=Info@entry=0x23f0708, 
textureLayer=textureLayer@entry=0)
at gc_hal_user_texture.c:3804
3804 gc_hal_user_texture.c: No such file or directory.

Seg fault Core dump 2

Program terminated with signal SIGSEGV, Segmentation fault.
#0 _SetFenceCtx (fence=0x5c30d6c, head=0x5c2ab74) at 
gc_hal_user_hardware.c:5752
5752 gc_hal_user_hardware.c: No such file or directory.

1)这些核心转储将定向到以下源文件。但我无法在上述Linux边界4.1.15内核版本中找到这些文件。他们指的是什么?为了克服这个问题,你有什么建议?

gc_hal_user_texture.c
gc_hal_user_hardware.c
src/glcore/gc_es_draw.c:943
src/glcore/gc_es_api.c:399

2)我可以在我的内核版本中找到一个名为gc_hal_kernel_hardware.c的文件。这是gdb回溯跟踪日志指出的文件吗?您是否知道这种分段错误?

1 个答案:

答案 0 :(得分:2)

阅读documentation of gdb,特别是9.5 Specifying Source Directories。由于你有一个core转储,它是一些崩溃的user-space应用程序(而不是kernel;内核应该永远不会崩溃,不幸的是,它可能会有一个冻结的系统)。另见signal(7)。您的gc_hal_user_texture.c属于崩溃application或其使用的某些library

您可以使用file(1)找出哪个程序生成core。运行file core。另见core(5)& proc(5)

请确保compile该程序包含DWARF调试信息和所有警告,因此gcc -g -Wall -Wextra

阅读Operating Systems: Three Easy Pieces以了解原则(以及用户空间代码和操作系统内核代码之间的区别)。

  

但我在上面的Linux边界4.1.15内核版本中找不到那些文件。他们指的是什么?

这些gc_hal_user_texture.c ... src/glcore/gc_es_api.c文件引用了一些应用程序或库源代码(当然它们不是内核源文件)。