gpt4 book ai didi

gdb - ELF 核心文件格式

转载 作者:行者123 更新时间:2023-12-03 22:00:05 28 4
gpt4 key购买 nike

没有深入挖掘 GDB 源代码,我在哪里可以找到有关用于创建核心文件的格式的文档?

ELF规范使核心文件格式保持打开状态,所以我想这应该是 GDB 规范的一部分!遗憾的是,我没有从 GNU 的 gdb 文档中找到这方面的任何帮助。

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

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

最佳答案

核心转储文件格式使用 ELF 格式,但在 ELF 标准中没有描述。 AFAIK,对此没有权威引用。

so how is the information about which file a segment corresponds to, stored in the core file?



ELF 笔记中包含许多额外信息。您可以使用 readelf -n去看他们。

CORE/NT_FILE 注释定义了内存地址范围和文件(+偏移量)之间的关联:
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
[...]

对于每个线程,您应该有一个 CORE/NT_PRSTATUS注意它为您提供了线程的寄存器(包括堆栈指针)。您或许可以从中推断出堆栈的位置。

有关 ELF 核心文件格式的更多信息:
  • Anatomy of an ELF core file (免责声明:我写了这个)
  • A brief look into core dumps
  • 关于gdb - ELF 核心文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5986366/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com