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

目录
相关文章
|
12月前
|
编译器
Qt获取当前所用的Qt版本、编译器、位数等信息
Qt获取当前所用的Qt版本、编译器、位数等信息
|
2月前
|
Shell API Python
WinDbg调试(三)-- 空格引发的悬案
文章介绍了一个由空格引发的目录删除失败问题。在使用 `rmdir` 指令删除目录时,部分环境出现删除失败但无错误日志的情况。通过 WinDbg 调试发现,路径中的空格导致路径被截断,从而无法正确删除目录。最终解决方案是在路径上添加双引号以确保路径完整。
225 82
|
6月前
|
编译器 C语言
Qt使用MSVC编译错误: LNK2019: 无法解析的外部符号
Qt使用MSVC编译错误: LNK2019: 无法解析的外部符号
301 1
|
JavaScript 前端开发
关于 ABAP 调试器里的 16 进制值的显示问题
关于 ABAP 调试器里的 16 进制值的显示问题
|
编译器
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
468 0
西门子S7-200 SMART如何查看符号名称和绝对地址?符号表如何操作?
本篇我们来学习如何在西门子S7-200 SMART的编程软件STEP7-Micro/WIN SMART中查看符号名称和绝对地址。在视图菜单中,单击选择仅以绝对地址、仅按符号名称、同时显示符号名称和绝对地址三种方式来显示参数。
西门子S7-200 SMART如何查看符号名称和绝对地址?符号表如何操作?
西门子S7-200 SMART如何查看符号名称和绝对地址、符号表相关操作
本篇我们来学习如何在西门子S7-200 SMART的编程软件STEP7-Micro/WIN SMART中查看符号名称和绝对地址。在视图菜单中,单击选择仅以绝对地址、仅按符号名称、同时显示符号名称和绝对地址三种方式来显示参数。
西门子S7-200 SMART如何查看符号名称和绝对地址、符号表相关操作
|
Java
编译OpenJDK12:LNK2019 无法解析的外部符号sprintf
编译OpenJDK12:LNK2019 无法解析的外部符号sprintf
132 0
|
C语言 内存技术
ARM架构与编程(基于I.MX6ULL): 代码重定位(八)(上)
ARM架构与编程(基于I.MX6ULL): 代码重定位(八)
327 0
|
Android开发
【Android 逆向】ELF 文件格式 ( ELF 文件当前版本号 | 操作系统 ABI 信息 | ABI 版本 | 文件头校验 | 文件头长度信息 )
【Android 逆向】ELF 文件格式 ( ELF 文件当前版本号 | 操作系统 ABI 信息 | ABI 版本 | 文件头校验 | 文件头长度信息 )
298 0
【Android 逆向】ELF 文件格式 ( ELF 文件当前版本号 | 操作系统 ABI 信息 | ABI 版本 | 文件头校验 | 文件头长度信息 )