[√]调试信息标准符号: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

目录
相关文章
[11-22]MASM32编程获取文件语言、版本信息v3
[11-22]MASM32编程获取文件语言、版本信息v3
在masm32中获取并显示IE版本的方法1
在masm32中获取并显示IE版本的方法1
|
4月前
crash —— 获取内核和模块的符号
crash —— 获取内核和模块的符号
|
5月前
|
NoSQL
技术分享:如何使用GDB调试不带调试信息的可执行程序
【8月更文挑战第27天】在软件开发和调试过程中,我们有时会遇到需要调试没有调试信息的可执行程序的情况。这可能是由于程序在编译时没有加入调试信息,或者调试信息被剥离了。然而,即使面对这样的挑战,GDB(GNU Debugger)仍然提供了一些方法和技术来帮助我们进行调试。以下将详细介绍如何使用GDB调试不带调试信息的可执行程序。
152 0
|
存储 Linux C语言
嵌入式linux下的c语言简易日志log模块,带颜色显示(一)
嵌入式linux下的c语言简易日志log模块,带颜色显示(一)
|
IDE 开发工具 C++
在 Visual Studio 调试器中指定符号 (.pdb) 和源文件
查找并指定符号文件和源文件;指定符号加载行为、使用符号和源服务器上;加载符号自动或在要求。   内容 查找符号 (.pdb) 文件 查找源文件   查找符号 (.pdb) 文件 说明 在之前的 Visual Studio 版本与 2012 中,调试在远程计算机上的管理的代码需要符号文件还查找了远程计算机。
4722 0
|
Android开发
【错误记录】Android Studio 编译信息输出乱码
【错误记录】Android Studio 编译信息输出乱码
208 0
【错误记录】Android Studio 编译信息输出乱码
|
IDE 开发工具
QT应用编程: 解决Visual Studio下使用qDebug没有输出、输出中文乱码
QT应用编程: 解决Visual Studio下使用qDebug没有输出、输出中文乱码
1145 0
QT应用编程: 解决Visual Studio下使用qDebug没有输出、输出中文乱码
|
IDE 开发工具 C++
Visual Studio下程序开发: error LNK2019: 无法解析的外部符号
Visual Studio下程序开发: error LNK2019: 无法解析的外部符号
1020 0
Visual Studio下程序开发: error LNK2019: 无法解析的外部符号
VS无法断点调试,编译时为生成pdb文件,不包含调试信息(未加载任何符号)
VS无法断点调试,编译时为生成pdb文件,不包含调试信息(未加载任何符号)
516 0