首页 > 代码库 > 解决GDB调试时“ No symbol table is loaded. Use the "file" command”问题
解决GDB调试时“ No symbol table is loaded. Use the "file" command”问题
1.解决的办法 :
GDB调试时使用list命令时出现 “No symbol table is loaded. Use the "file" command”提示,其实是C编译器的选项CFLAGS没有设置好,gcc -o进行编译时不用不用写“-g”选项,只需在makefile文件开头写上“CFLAGS = -g”在编译时编译器就会自动使用CFLAGS的设置了。
2.探索的过程:
我的makefile文件是这样编写的:
“make clear”、“make main”、“gdb main”、“(gdb)l”后出现的错误信息如下:
解决办法,修改makefile如下(方法1):
或者修改makefile如下(方法2):
其实上面方法1和方法2在gcc中设置-g选项都是多余的,只要加上“CFLAGS = -g”,编译时,编译器就会自动使用CFLAGS的选项,
修改makefile如下(方法3):
这是整个过程就是正确的,list出了要调试的程序主体:
OK,就可以开始用gdb调试程序了。
3.gcc编译链接选项的进一步说明
1)CXXFLAGS表示用于C++编译的选项
2)LDFLAGS表示传给链接器的选项
3) CFLAGS表示C编译的选项
-Wall 打开警告开关
-o 代表默认优化
-g 生成调试信息,生成的可执行文件具有和源代码关联的可调试信息(说明:可调试信息指的是可以用调试工具
调试你的可执行程序, 可以以C语言源代码形式查看变量、单步执行,否则,在调试时只能看到汇编单步执行,
不知道具体运行到哪一步了。)