关于ELF格式文件里面的调试信息解读

调试信息格式一般有几种:debug信息格式有stabs,coff,xcoff,dwarf。各自在业界不同的调试器下面用,gdb只是调试器中的一个罢了。

常用的有两种格式,stab和dwarf,stab较早,dwarf较新(在Linux中大量使用)。两种格式介绍:IBM Developer 正在整合其语言站点组合。 – IBM Developer

gcc编译时候,可以配置一下编译选项,就能产生对应的调试信息格式。

1. stab格式的调试信息,存在于最后的可执行文件 .stab , stabstr 两个section里。(参考博客:关于elf文件的debug信息-布布扣-bubuko.com)

关于ELF格式文件里面的调试信息解读_第1张图片

2. dwarf格式的调试信息存在于最后的可执行文件 .debug打头的section里, 主要是.debug_info和.debug_line这两里面

关于ELF格式文件里面的调试信息解读_第2张图片

由于gdb和gdbserver绑定了,留给自己diy的空间几乎没有。如果我们想自己定制调试功能,那么需要我们自己开发一个类似gdb的调试器,我们就得自己去解析上面提到的两种调试信息,这里我们以用得最多的dwarf为例,其中有个现成的工具,gnu工具集的bfd,这个可以读取。如果我们想在源代码级搞,那就用libdwarf这个库。其实还有另外一个更好的库libelfin[翻译]自己动手编写一个Linux调试器系列之1 准备工作 by lantie@15PB-外文翻译-看雪论坛-安全社区|安全招聘|bbs.pediy.com

我准备先在现成工具上搞,然后自己用qt加工,如果不行,那就用libdwarf库,自己造一个吧。

要做调试器,可以参考这个系列文章,写得很好,他把gdb和gdbserver做在了一个进程中(Linux标准gdb是分开的),这个在调试性能强大的cpu上的应用程序,ok的。改一下,就能支持远程调试了,原理都是一样的https://blog.tartanllama.xyz/writing-a-linux-debugger-variables/

关于上述信息,有大量的参考博客,大家可以搜一搜。

你可能感兴趣的:(桌面操作系统,linux,调试器,调试器信息,调试信息)