首先需要在gcc或者g++编译时加入-g选项,这个程序才能将调试信息加入到执行程序中

其次需要把编译优化选项去掉,加入-O0选项,否则的话编译会修改你的源程序,调试时出现诡异的问题;

启动gdb的方法

1gdb <program>
program
也就是你的执行文件,一般在当然目录下。

2gdb <program> core
gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。

3gdb <program> <PID>
如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程IDgdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。或者是进入gdb后,通过attach PID命令,将调试进程加入到gdb中

gdb启动时常用开关选项

-symbols <file>
 -s <file>
 从指定文件中读取符号表。

-se file
 从指定文件中读取符号表信息,并把他用在可执行文件中。

-core <file>
 -c <file>
 调试时core dumpcore文件。
 -directory <directory>
 -d <directory>
 加入一个源文件的搜索路径。默认搜索路径是环境变量中PATH所定义的路径


来自yaronspace.cn  本文链接:http://yaronspace.cn/blog/archives/942