加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

不再惧怕Linux内核panic (二) 认识DWARF

05/06 10:30
2116
阅读需 5 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

哈喽,大家好,我是LittleG。

前言

《不再惧怕Linux内核panic (一)》系列

当内核发生panic之后,事后要想根据debug信息,推导源码位置/行号等调试信息时,就不得不提到 DWARF 格式的调试信息,依稀记得曾经我们就碰过一次因DWARF版本适配不对导致调试信息不全,阻塞了panic问题分析,出现进而阻塞了项目进度的情况。今天就了解一下 DWARF

正文

DWARF(Debugging With Attributed Record Formats)是一种广泛使用的调试信息格式,它被编译器用来在编译程序时生成关于源代码结构、类型信息、变量、函数、源代码行号映射等调试信息。这些信息对于调试器来说是至关重要的,因为它允许开发者在没有源代码的情况下也能理解程序的内部结构,并且可以在源代码级别进行调试。

关系说明:

Linux: 在Linux系统上,大多数编译器(如GCC)默认使用DWARF格式来生成调试信息。这些信息被嵌入到可执行文件或动态库中,使得GDB等调试器能够解析这些信息,为开发者提供源代码级别的调试体验。

ARM: DWARF是一种与体系结构无关的格式,这意味着它不仅限于特定的CPU架构,包括ARM在内的各种架构的程序都可以使用DWARF来存储调试信息。无论是ARM32还是ARM64(AArch64)架构,DWARF都支持良好,确保跨平台的调试能力。

编译器: 编译器如GCCClang等负责在编译时生成DWARF调试信息。开发人员通过编译器的命令行选项(如GCC的-g)来控制是否生成以及生成多少调试信息。

kdump: 是Linux内核的一项功能,用于在系统崩溃时捕获内核的内存映像转储文件(vmcore)。vmcore文件中可能包含DWARF调试信息,特别是当内核本身或内核模块是带有调试信息编译时。使用DWARF信息,开发者可以更深入地分析内核崩溃的原因。

crash工具: 是一个用于分析Linux内核崩溃内存映像转储文件(vmcore)的调试工具。它利用了DWARF等调试信息来提供详细的内核堆栈跟踪、内存内容检查等功能,帮助开发者诊断和解决问题。

注意事项:

确保调试信息的完整性:在编译时使用正确的编译选项(如-g)来确保生成完整的DWARF信息。

版本兼容性:不同版本的DWARF格式可能不完全向后兼容。确保使用的编译器、调试器和分析工具支持目标DWARF版本。

性能与空间考量:调试信息会增加可执行文件的大小,可能影响加载时间和内存占用,尤其是对于资源有限的环境。

安全问题:发布产品前,应移除或混淆调试信息,避免暴露敏感源代码细节。

潜在问题:

DWARF 1至DWARF 5:每个新版本都引入了新特性以支持更多编程语言特性、编译器优化等。例如,DWARF 5引入了对C++11特性更好的支持,以及对其他高级语言特性的改进。

版本不匹配问题:如果使用了较新版本DWARF生成的调试信息,而调试器只支持旧版本,可能会导致调试信息解析不全或错误。反之,如果使用的是旧版本DWARF,可能无法充分利用新编译器提供的调试特性。

总结:
1、涉及到DWARF版本问题时,注意确保编译器、调试器和分析工具都是最新或相同版本,或至少兼容目标DWARF版本。对于版本不兼容的情况,可能需要升级或替换工具链组件,或者在编译时指定兼容旧版本的DWARF输出选项(如果支持的话)。

2、注意DWARF是一种与体系结构无关的调试信息格式。目前广泛应用于包括ARM在内的多种处理器架构中,是现代编译器和调试器之间交换调试信息的一种标准。

下期见~

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
NC7ST08M5X 1 Fairchild Semiconductor Corporation AND Gate, HST/T Series, 1-Func, 2-Input, CMOS, PDSO5, 1.60 MM, MO-178AA, SOT-23, 5 PIN
$0.33 查看
TJA1043T/1J 1 NXP Semiconductors TJA1043 - High-speed CAN transceiver SOIC 14-Pin

ECAD模型

下载ECAD模型
$2.33 查看
W25Q128JVSIQ 1 Winbond Electronics Corp Flash, 16MX8, PDSO8, SOIC-8

ECAD模型

下载ECAD模型
$2.34 查看

相关推荐

电子产业图谱

记录和分享C/C++、Linux、ARM、Android、IoT相关知识。技术相伴于生活和成长,愿你我永为少年,心中有火,眼中有光,始保热情。