此问题的更精确版本:Creating debug symbols for gdb manually。 我为我的语言生成了asm代码,并且想要监视变量。 AFAIK,允许这样做的是在
之后定义的.section .debug_info,"",@progbits
问题:如何为DWARF生成.section .debug_info
(因为我的系统是Linux;但实际上我对任何可行的方法都很好)?
某处是否有本节的文档?
让我们具体说说这个程序:
int sum(int a, int b) {
return a+b;
}
生成的asm可以在此处看到(x86-64 gcc 7.3):https://godbolt.org/z/ooTuuO 我认为,这是我需要的一部分:
.Ldebug_info0:
.long 0x6f
.value 0x4
.long .Ldebug_abbrev0
.byte 0x8
.uleb128 0x1
.long .LASF0
.byte 0x4
.long .LASF1
.long .LASF2
.quad .Ltext0
.quad .Letext0-.Ltext0
.long .Ldebug_line0
.uleb128 0x2
.string "sum"
.byte 0x1
.byte 0x1
.long .LASF3
.long 0x6b
.quad .LFB0
.quad .LFE0-.LFB0
.uleb128 0x1
.byte 0x9c
.long 0x6b
.uleb128 0x3
.string "a"
.byte 0x1
.byte 0x1
.long 0x6b
.uleb128 0x2
.byte 0x91
.sleb128 -20
.uleb128 0x3
.string "b"
.byte 0x1
.byte 0x1
.long 0x6b
.uleb128 0x2
.byte 0x91
.sleb128 -24
.byte 0
.uleb128 0x4
.byte 0x4
.byte 0x5
.string "int"
.byte 0
我可以看到变量名,但是除此之外我什么都不懂。我尝试查看的内容:
.loc
和.LFB, .LFE
标签的含义),但不足以理解本节的内容。换句话说,我找不到此部分的文档。你知道我在哪里可以找到它吗?