[√]调试信息标准符号:DWARF

简介: [√]调试信息标准符号:DWARF

DWARF(Debugging With Attributed Record Formats)是一种用于调试信息的标准格式和API,通常与编译器一起使用。它提供了一种有效的方法来生成、存储和访问程序符号和调试信息,这些信息可以在程序崩溃或其他错误情况下帮助程序员调试代码。

DWARF 通常以一种基于二进制的格式嵌入到可执行文件或库中。这些调试信息包含编译器产生的各种元数据,如变量名、类型和地址范围等。在调试时,调试器将使用 DWARF 数据来解释已编译程序的结构,并将程序在运行时的状态映射到源代码级别,使得程序员可以查看变量、函数和调用堆栈等信息。

通过命令:objdump -h xxx 可以看到调试信息在ELF文件中的位置,.debug_xxx的section段。

Usage: objdump <option(s)> <file(s)>
 Display information from object <file(s)>.
 At least one of the following switches must be given:
 -h, --[section-]headers  Display the contents of the section headers

image.png

  • .debug_abbrev.debug_info部分中使用的缩写
  • .debug_aranges 内存地址和编译之间的映射
  • .debug_frame 调用帧信息
  • .debug_info 包含DWARF调试信息项(DIE)的核心DWARF数据
  • .debug_line 行号程序
  • .debug_loc 位置说明
  • .debug_macinfo 宏描述
  • .debug_pubnames 全局对象和函数的查找表
  • .debug_pubtypes 全局类型的查找表
  • .debug_ranges DIE引用的地址范围
  • .debug_str.debug_info使用的字符串表
  • .debug_types 类型说明

使用readelf查看section

readelf -p .debug_aranges libjni.so
readelf: Warning: Section '.debug_aranges' was not dumped because it does not exist

但是我发现

objdump -W -j .debug_aranges libjni.so 

就有

可能是我的这个so使用win平台编译导致的,我在Linux上用ndk编译的so都有这个section

目录
相关文章
|
8月前
|
JavaScript 前端开发
关于 ABAP 调试器里的 16 进制值的显示问题
关于 ABAP 调试器里的 16 进制值的显示问题
64 0
|
11月前
|
存储 Linux C语言
嵌入式linux下的c语言简易日志log模块,带颜色显示(一)
嵌入式linux下的c语言简易日志log模块,带颜色显示(一)
|
12月前
|
API Windows
[✔️]命令行选项的符号释义
[✔️]命令行选项的符号释义
61 0
|
12月前
【STM32】【vscode编译】 不允许使用与号(&)。& 运算符是为将来使用而保留的;请用双引号将与号引起来(\“&\“),以将其作为字符串的一部分传递
【STM32】【vscode编译】 不允许使用与号(&)。& 运算符是为将来使用而保留的;请用双引号将与号引起来(\“&\“),以将其作为字符串的一部分传递
275 0
|
JSON Linux 数据格式
ChatGPT无所不知?? 怎么可能? vscode启用括号对参考线, 他就不知道
一开始我是这样问的 问ChatGPT vscode , 当我点击某个括号时, 显示配对的括号, 有一条线连接两个括号, 怎么实现? vscode自带这个功能吗? 或者用什么插件扩展
356 0
ChatGPT无所不知?? 怎么可能? vscode启用括号对参考线, 他就不知道
|
Unix
[oeasy]python0081_ANSI序列由来_终端机_VT100_DEC_VT选项_终端控制序列
[oeasy]python0081_ANSI序列由来_终端机_VT100_DEC_VT选项_终端控制序列
56 0
[oeasy]python0081_ANSI序列由来_终端机_VT100_DEC_VT选项_终端控制序列
|
算法 Java Android开发
如何在eclipse调制自动语法提示
如何在eclipse调制自动语法提示
如何在eclipse调制自动语法提示
|
编译器 Windows
在windows命令行编译Qt程序并纠错
在windows命令行编译Qt程序并纠错
328 0
在windows命令行编译Qt程序并纠错
西门子S7-200 SMART如何查看符号名称和绝对地址?符号表如何操作?
本篇我们来学习如何在西门子S7-200 SMART的编程软件STEP7-Micro/WIN SMART中查看符号名称和绝对地址。在视图菜单中,单击选择仅以绝对地址、仅按符号名称、同时显示符号名称和绝对地址三种方式来显示参数。
西门子S7-200 SMART如何查看符号名称和绝对地址?符号表如何操作?