dwarf调试信息
Welcome to the DWARF Debugging Standard https://dwarfstd.org/
dwarf调试信息格式学习 https://blog.csdn.net/kikilizhm/article/details/124191751 (重点看)
DWARF调试格式的简介 https://blog.csdn.net/wuhui_gdnt/article/details/7283483 (重点看)
DWARF调试格式的简介(续完)https://blog.csdn.net/wuhui_gdnt/article/details/7283529?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-7283529-blog-124191751.235%5Ev28%5Epc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-7283529-blog-124191751.235%5Ev28%5Epc_relevant_default&utm_relevant_index=2 (重点看)
调试信息(debugging information)——解析DWARF文件 https://blog.csdn.net/Dong_HFUT/article/details/122617871?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-122617871-blog-124191751.235%5Ev28%5Epc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-122617871-blog-124191751.235%5Ev28%5Epc_relevant_default&utm_relevant_index=4
LLVM中dwarf部分相关命名空间及结构 https://llvm.org/doxygen/namespacellvm_1_1dwarf.html
dwarf2调试信息格式——chapter1,2 https://blog.csdn.net/JS072110/article/details/43818151?spm=1001.2014.3001.5502
探索 DWARF 调试格式信息 https://blog.csdn.net/chenyijun/article/details/85284951 (重点参考)
调试信息(debugging information)——解析DWARF文件 https://blog.csdn.net/Dong_HFUT/article/details/122617871?ops_request_misc=&request_id=&biz_id=102&utm_term=dwarf2+%E8%B0%83%E8%AF%95%E4%BF%A1%E6%81%AF%E6%A0%BC%E5%BC%8F&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-122617871.142^v83^insert_down1,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4449
gdb对dwarf调试信息的解析和使用 https://blog.csdn.net/JS072110/article/details/44153303?spm=1001.2014.3001.5502
DWARF, 调试信息存储格式 https://zhuanlan.zhihu.com/p/419908664?utm_id=0 (重点参考)
Unwind 栈回溯详解 https://www.cnblogs.com/pwl999/p/15534946.html (dwarf相关)
linux 栈回溯(x86_64 ) https://zhuanlan.zhihu.com/p/302726082?utm_id=0
[Dwarf-Discuss] The difference between .eh_frame section and .debug_frame section
Stack unwinding https://zhuanlan.zhihu.com/p/280929169?utm_source=wechat_session&utm_id=0
ELF文件——DWARF源码解析 https://blog.csdn.net/qq_35018427/article/details/121981211
The .eh_frame section https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
readelf --debug-dump=info binary_name | grep -A 2 'Compilation Unit @'
在使用g++编译此代码时,可以通过-g参数设置不同的调试信息级别。具体来说,-g参数有以下不同级别:
-g:以操作系统的本机格式(stabs、COFF、XCOFF或DWARF)生成调试信息。GDB可以使用这些调试信息。
-g0:不生成任何调试信息。
-g1:生成基本的调试信息,包括外部变量、函数名和行号。
-g2:生成更详细的调试信息,包括局部变量和类型信息。
-g3:生成最详细的调试信息,包括源代码和宏定义。现在新版本的gcc编译器默认使用DWARF5,DWARF5是DWARF格式的最新版本,它在前几个版本的基础上增加了一些新的特性。然而,DWARF5并不支持展开宏定义。需要加上-gdwarf-2、-gdwarf-3或者-gdwarf-4参数使用低版本的DWARF。
×××××××××××××××××××××××××××××××××
查看调试信息版本:
readelf --debug-dump=info test | grep -A 2 'Compilation Unit @'
objdump --dwarf=info test
llvm-dwarfdump -r 1 long_double_arg | head | grep Compile
×××××××××××××××××××××××××××××××××
×××××××××××××××××××
readelf --debug-dump=frames dwarf_test
objdump --dwarf=frames dwarf_test
××××××××××××××××××××
行号
在调试源代码时候,我们经常将断点打在源码中的某一行,gdb需要对应到汇编的起始代码位置。
×××××××××××××××××××××××××××××××
readelf --debug-dump=decodedline test
objdump --dwarf=decodedline test
readelf --debug-dump=line dwarf_test
objdump --dwarf=line dwarf_test
×××××××××××××××××××××××××××××××
posted on 2023-04-04 17:13 lh03061238 阅读(515) 评论(0) 编辑 收藏 举报