今天学习了一下gcc与gdb的具体使用方法。并亲自用gdb调试了一下程序。gdb还是用不熟,只能以后慢慢加深体会了。(gdb刚开始用还真是不方便,也不知道如果做嵌入开发的话,有没有其它比较好的工具?如果有朋友知道,推荐一二,在此多谢啦!!)

1GNU C编译器(即GCC

gcc -v GCC版本

-c:仅把源代友编译为目标代码;

-sGCC在为C代码产生了汇编语言文件后,就停止编译。GCC产生的汇编语言文件的缺省扩展名为.s

-E:指示编译器仅对输入文件进行预处理。此时,预处理器的输出被送到标准输出(如显示器)而不是储存在文件里。

-OGCC对源码进行基本优化。

-O2GCC产生尽可能小和尽可能快的代码

-g选项告诉GCC产生能被GNU调试器(如gdb)使用的调试信息,以便调试用户的程序。

-pg选项告诉GCC在用户的程序里加入额外的代码,执行时,产生gporf用的剖析信息以显示程序的耗时情况。

gcc info page:详细GCC编译器参数的说明,在Emacs内,按下Chi,然后选“gcc”的选项。

 

2、使用gdb

gdb filename:能直接指定想要调试的程序。也可用gdb去检查一个因程序异常终止而产生的core文件,或者与一个正在运行的程序相连。

1)为使gdb正常工作,必须使程序在编译时包含调试信息。调试信息包含程序里的每个变量的类型、在可执行文件里的地址映射以及源代码的行号。

2gdb命令一览:

file:装入想要调试的可执行文件

kill:终止正在调试的程序;

list:列出产生执行文件的源代码的一部分

next:执行一行源代码但不进入函数内部;

step:执行一行源代码而且进入函数内部;

run:执行当前被调试的程序;

quit:终止gdb

watch:能监视一个变量的值 而不管它何时被改变;

print:显示表达示的值;

break:在代码里设置断点,这将使程序执行到这里时被挂起;

make:不退出gdb就可以重新产生可执行文件

shell:不离开gdb就执行UNIX shell命令

3)可在gdb中按Tab键让gdb补齐一个命令。