gdb:使用-g编译的二进制文件和使用-g编译的二进制文件

时间:2016-08-24 09:35:34

标签: gcc elf

我尝试使用gdb在目标上调试嵌入式应用程序。因此,在主机上运行的gdb需要带有调试符号的二进制文件,即使用-g编译的二进制文件。在目标上,二进制文件的剥离副本就足够了。在目标上,我尝试使用不使用-g而不是剥离副本编译的二进制文件,但它没有工作。

GNU strip丢弃目标文件中的所有符号(使用-g编译)。那么,它不等于没有-g编译的二进制文件吗?为什么它不起作用?

1 个答案:

答案 0 :(得分:0)

  

在主机上,我尝试使用不使用-g而不是剥离副本编译的二进制文件,但它没有用。

你反过来了:你需要在目标上剥离二进制文件,并在主机上完全调试二进制文件。

gdbserver 需要(或使用)由-ggdb生成的调试信息。

最好不要编译两次,而是用-g编译一次,然后:

cp a.out a.out.stripped
strip -g a.out.stripped

并将完全调试和剥离的二进制文件保持在一起。