我尝试使用gdb在目标上调试嵌入式应用程序。因此,在主机上运行的gdb需要带有调试符号的二进制文件,即使用-g编译的二进制文件。在目标上,二进制文件的剥离副本就足够了。在目标上,我尝试使用不使用-g而不是剥离副本编译的二进制文件,但它没有工作。
GNU strip丢弃目标文件中的所有符号(使用-g编译)。那么,它不等于没有-g编译的二进制文件吗?为什么它不起作用?
答案 0 :(得分:0)
在主机上,我尝试使用不使用-g而不是剥离副本编译的二进制文件,但它没有用。
你反过来了:你需要在目标上剥离二进制文件,并在主机上完全调试二进制文件。
gdbserver
不需要(或使用)由-g
,gdb
生成的调试信息。
最好不要编译两次,而是用-g
编译一次,然后:
cp a.out a.out.stripped
strip -g a.out.stripped
并将完全调试和剥离的二进制文件保持在一起。