GDB是GNU发布的一款功能强大的程序调试工具 GDB主要完成三个方面的功能:
1.启动呗调试程序
2.让被调试的程序在指定的位置停住
3.当程序被停住时,可以查看程序的运行状态。
例:
1.编译生成可执行文件:
gcc -g hello.c -o hello
2.启动GDB
gdb hello
3.在main函数出设置断点
break main
4.运行程序
run
GDB常用命令
gdb hello | 启动GDB |
file hello | 载入文件名 |
list(l) | 查看程序 |
break(b)函数名 | 在函数入口处添加断点 |
break(b)行号 | 在指定行添加断点 |
break(b)文件名:行号 | 在指定文件的指定行添加断点 |
break(b)行号if条件 | 当条件为真时,指定行号处断点生效 |
info break | 查看所有设置的断点 |
delete断点编号 | 删除断点 |
run(r) | 开始运行程序 |
next(n) | 单步运行程序(不进入子函数) |
step(s) | 单步运行程序 |
continue(c) | 继续运行程序 |
print(p)变量名 | 查看指定变量值 |
finish | 运行程序,直到当前函数结束 |
watch变量名 | 对指定变量进行监控 |
quit(q) | 退出gdb |
#include<stdio.h> #define MAX_RECORD_NUMBER 10 int record[MAX_RECORD_NUMBER] = {12,76,48,62,94,17,37,52,69,32}; swap(int* x,int* y) { int temp; temp = *x; *x = *y; *y = temp; } int main() { int i,j; for(i=0;i<MAX_RECORD_NUMBER-1;i++) { for(j=MAX_RECORD_NUMBER-1;j>1;j++) { if(record[j])<record[j-1] { swap(&record[j],&record[j-1] } } } for(i=0;i<MAX_RECORD_NUMBER-1;i++) { printf("%d",record[i]); } printf("\n"); return 0; }