gcc(GCC)4.6.0
GNU gdb(GDB)Fedora(7.2.90.20110525-38.fc15)
GNU gdb(GDB)Fedora(7.2.90.20110525-38.fc15)
当我尝试使用gdb调试我的问题时,我最近遇到了问题.当我加载我的二进制文件时,gdb抱怨“没有找到调试符号”
所以,当我做了以下事情:
nm ass1
我得到以下输出(仅样本)
00000000006026e0 t __init_array_end 00000000006026d0 t __init_array_start 00000000004020e0 T __libc_csu_fini 0000000000402050 T __libc_csu_init U __libc_start_main@@GLIBC_2.2.5 00000000006029ec A _edata 0000000000602b28 A _end 000000000040212c T _fini 0000000000401420 T _init 0000000000401610 T _start U atoi@@GLIBC_2.2.5 000000000040163c t call_gmon_start 0000000000602b10 b completed.5886 00000000006029e8 W data_start 0000000000602b18 b dtor_idx.5888 00000000004016d0 t frame_dummy 00000000004016f4 T main
问题是我忘了添加-g.所以我决定用-g编译并再次运行nm.我有一个simliar输出,这包含我使用-g的调试符号,而gdb这次没有抱怨:
U __libc_start_main@@GLIBC_2.2.5 00000000006029ec A _edata 0000000000602b28 A _end 000000000040212c T _fini 0000000000401420 T _init 0000000000401610 T _start U atoi@@GLIBC_2.2.5 000000000040163c t call_gmon_start 0000000000602b10 b completed.5886 00000000006029e8 W data_start 0000000000602b18 b dtor_idx.5888 00000000004016d0 t frame_dummy 00000000004016f4 T main w pthread_cancel
除了二进制文件更大.我可以注意到使用nm的任何不同.我想知道我应该找什么?调试符号是什么样的?
非常感谢任何建议,