GDB调试C程序
本文将记录一次使用GDB调试的过程,学会调试代码,找到BUG点,而不是依赖于外部的测试反馈更有价值。
准备工作
main.c,这里使用的是一个递归程序
#include <stdio.h>
int main(){
hanoi(3,'A','B','C');
}
void hanoi(int n, char from, char to, char via)
{
if (n == 1) printf("%c -> %c\n", from, to);
else
{
hanoi(n - 1, from, via, to);
hanoi(1, from, to, via);
hanoi(n - 1, via, to, from);
}
return;
}
调试命令
gcc -g main.c // -g 在编译的时候,产生调试信息
gdb -tui a.out // gdb 调试main.c生成的a.out
start // 开始调试
s // 单步调试
info frame // 查看栈帧信息
q // 退出gdb调试