Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Gdb ELF核心文件格式_Gdb_Elf_Coredump - Fatal编程技术网

Gdb ELF核心文件格式

Gdb ELF核心文件格式,gdb,elf,coredump,Gdb,Elf,Coredump,除了通过GDB源代码进行挖掘之外,我在哪里可以找到有关用于创建核心文件的格式的文档 规范保留了核心文件格式,所以我想这应该是GDB规范的一部分!遗憾的是,在这方面,我没有从GNU的gdb文档中找到任何帮助 下面是我试图做的:将虚拟地址映射到组成运行进程的可执行文件/库中的函数名。为此,我首先要从核心文件中找出从虚拟地址空间到可执行文件/库名称的映射,然后深入到相关文件中以获得符号信息 现在'readelf-a core'告诉我,核心文件中几乎所有的段都是'load'类型的——我猜这些是来自所有参

除了通过GDB源代码进行挖掘之外,我在哪里可以找到有关用于创建核心文件的格式的文档

规范保留了核心文件格式,所以我想这应该是GDB规范的一部分!遗憾的是,在这方面,我没有从GNU的gdb文档中找到任何帮助

下面是我试图做的:将虚拟地址映射到组成运行进程的可执行文件/库中的函数名。为此,我首先要从核心文件中找出从虚拟地址空间到可执行文件/库名称的映射,然后深入到相关文件中以获得符号信息


现在'readelf-a core'告诉我,核心文件中几乎所有的段都是'load'类型的——我猜这些是来自所有参与文件的.text和.bss/.data段,外加一个堆栈段。除了这些加载段,还有一个音符段,但它似乎不包含贴图。那么,段对应于哪个文件的信息是如何存储在核心文件中的呢?这些“加载”段的格式是否以特定的方式包含文件信息?

与其说是
gdb
,不如说是
gdb
使用的
bfd
库、
binutils
等。内核转储是进程崩溃时的内存映像。它包括程序段、堆栈、堆和其他数据。为了理解内容,您仍然需要原始程序:符号表和其他数据使内存映像中的原始地址和结构有意义。

有关生成核心文件的进程的其他信息存储在ELF note部分,尽管是以特定于操作系统的方式存储的。例如,请参阅For.

解决问题的更简单方法可能是解析/proc/$pid/maps中的文本,以确定给定虚拟地址映射到哪个文件。然后可以解析相应的文件


Kenshoto的开源VDB(调试器)使用这种方法,如果你能阅读python,这是一个很好的例子。

核心转储文件格式使用ELF格式,但ELF标准中没有描述。好吧,这方面没有权威的参考资料

那么,段对应于哪个文件的信息是如何存储在核心文件中的呢

ELF注释中包含了许多额外的信息。您可以使用
readelf-n
查看它们

CORE/NT_文件注释定义了内存地址范围和文件(+偏移量)之间的关联:

对于每个线程,您都应该有一个
CORE/NT\PRSTATUS
注释,其中提供线程的寄存器(包括堆栈指针)。您可能可以由此推断堆栈的位置

有关ELF核心文件格式的详细信息:

  • (免责声明:这是我写的)


您能详细说明一下“核心文件格式”是什么意思吗?您指的是gcc生成的目标代码格式还是最终可执行文件的格式,在这种情况下是ELF还是其他格式?这个问题的较新答案是。
Page size: 1
             Start                 End         Page Offset
0x0000000000400000  0x000000000049d000  0x0000000000000000
    /usr/bin/xchat
0x000000000069c000  0x00000000006a0000  0x000000000009c000
    /usr/bin/xchat
0x00007f2490885000  0x00007f24908a1000  0x0000000000000000
    /usr/share/icons/gnome/icon-theme.cache
0x00007f24908a1000  0x00007f24908bd000  0x0000000000000000
    /usr/share/icons/gnome/icon-theme.cache
0x00007f24908bd000  0x00007f2490eb0000  0x0000000000000000
    /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf
[...]