一. 利用GCC编译程序:(以test.c程序为例进行说明)
1. 先生成目标文件,再生成可执行文件。
gcc -c test.c /*将test.c源代码编译成目标文件,生成test.o文件*/
gcc -o test test.o /*将生成的test.o文件链接生成可执行文件test*/
2. 一步生成可执行文件,不产生目标文件。其中-Wall可产生更详细的编译过程信息。
gcc test.c -o test -Wall
二. 利用GDB调试程序。
1.在编译程序时增加-g。
gcc test.c -o test -g
2.编译成功后输入gdb + 编译后的文件名(test)。
3.下面可通过一下常见命令进行调试。
- r(run):运行程序。
- b(break):设置断点。其中,b + 行号,设置该行断点;b + 函数名,对该函数设置断点。
- c(continue):继续运行。
- q(quit):退出程序。
- d(delete):删除断点。其中,d + break删除所有断点;d + break + n删除第n个断点。
- clear + 行号n:删除第n行断点。
- disable + break + n:禁用第n个断点。
- enable + break + n:使能第n个断点。
- 查看断点信息,其中info + b为查看所有断点信息,info + b + n查看第n个断点信息。
- display + i:监测变量i的值。当遇到断点时会显示变量i的值。
- set 变量i = n:修改变量i的值为n。
- l(list):打印文件代码。如,l 1,8为打印1-8行代码。
- p(print):打印变量或表达式的值。
- n(next):单步调试。
- s(step):进入函数体。
- finish:退出已进入的函数。