在linux 下通过vscode调试elf可执行文件
elf 是linux 下可执行可链接文件(executable and linkable format)。通过gcc/make 我们很容易编译出我们需要的elf文件,借助vscode可以在ubuntu图形化调试该程序,再也不用在gdb命令操作了。
如下是elf文件结构,包含文件头(elf header)和代码、数据区索引表(program header table、section header table)和对应代码区、数据区。
明白了如上文件结构,还需要具体解答如下疑惑。
什么文件可以被调试?
通过file命令对比可以知道用以调试的文件包含 with debug_info。
可以被调试的文件。
debug 版本额外包含什么信息?
如上可调式的elf文件中增加包含 debug_aranges、debug_info等7个section存储包含数组、文件信息、行数、字符串、宏等调试信息。
可以通过 --debug-dump=aranges/info/abbrev/line/str/ranges/macro分别显示对应的 区信息。
如何设置debug/release 版本?
知道了用以调试的程序信息,那么如何编译对应程序的debug版本,通常来说编gcc的 -gdebug 选项和-O优化选项:
有了如上elf文件认识,接下来就是vscode debug程序了,成功编译可执行文件后,通过vscode 建立工程添...