linux 学习使用gdb

代码实例: hello.c
#include <stdio.h>
#include <stdlib.h>

void fun()
{
   printf("方法:fun()\n");
   char data[5]={'h','e','l','l','o'};
   int i;
   for(i=0;i<5;i++){
       printf("data 数组的第%d位是:%c\n",i,data[i]);
   }
   data[12030126]='s';
}

int main(){
   printf("Hello World\n");
   fun();
   exit(0);
}

1. 编译生成可执行文件 hello.c -->hello

# 注意:调试时一定要带上 -g 选项。如果没有,调试时看不见程序的函数名、变量名。只能看到运行时的内存地址
gcc -g -o Hello Hello.c

2. 启动gdb

gdb Hello

请添加图片描述

3. 可以使用help 查看相关命令

4. 退出使用quit 命令,简写 q

5. backtract 查看栈信息

下图表示main函数调用了fun函数后在11行
请添加图片描述

6. print ----- 检测变量.

请添加图片描述

7. list + num 列出num行程序源代码,默认10行

 list  +   函数名 列出函数名的源代码
 lsit  -    列出当前行前面的源代码
 set listsize num 设置list 默认的显示行数
 show listsize 查看list 默认的显示行数

请添加图片描述

8. break + 行号 或着 break + 函数名

b 行号 if xxxx 条件断点
请添加图片描述

9. 调试基本命令:


c (cont) == continue 继续执行
n == Step Over 调试下一行
s == Step Into 进入这一行代码
f (finish) == 退出函数

10. commands 命令设置断点的执行命令 .以end结束

设置断点在第10行,然后设在commands : 先打印data数组的值,然后将data[0]修改为‘A’ ,再次打印data数组。请添加图片描述

11. 打印设置的断点:info break

请添加图片描述

12. d == delete 删除断点

请添加图片描述

13. 禁用/恢复相关设置

disable b(break) num / enable b num
disable display num / enable d num
禁用12相关断点
请添加图片描述

14. display

display 和 print的功能一样都是打印变量等信息的。区别在于只要调试不退出(quit)。每次运行到相关断点位置都会打印相关变量。(注意:和断点配合使用)

每次run 后,运行第10行代码后,就会打印一次data[0]@5 = “hello”
在这里插入图片描述

查看:info display,删除 d display

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值