首页 > 代码库 > 解决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语言源代码形式查看变量、单步执行,否则,在调试时只能看到汇编单步执行,

                  不知道具体运行到哪一步了。)