Linux下的gcc+gdb调试记录

参考书上例子+自己实际操作 记录笔记

目录

1.gcc 的使用

2.gdb功能分类

3.gdb命令行格式

        常用参数:

         启动gdb方式:

        常用gdb命令:

 4.基本调试技术

        4.1 例子程序

        4.2 列出源码

       4.3断点管理

         4.4 执行程序

        4.5显示程序变量

        4.6信号管理

5.多进程调试

6.调试意外终止程序

7.内核调试技术

1.gcc 的使用

        Usage: gcc [options] file...

        常用参数:Linux 输入 gcc --help 可查看

 

 

2.gdb功能分类

  •         多种方式加载调试程序
  •         设置断点
  •         检查程序运行中各种状态和信号的变化
  •         动态改变程序执行环境

3.gdb命令行格式

         gdb [options] [executable-file] [core-file] 

        常用参数:

         启动gdb方式:

        常用gdb命令:

 4.基本调试技术

        包括 断点管理 执行程序 显示程序变量 信号管理

        4.1 例子程序

 编译test.c 

        gcc -g -o test test.c        -g 生成调试信息

        4.2 列出源码

                gdb test  

        显示如下界面:

 输入 list  默认显示前10行  试试 list 1 list 8,10

       4.3断点管理

输入break 8 或者b 8  或者break 函数名

查看断点 info breakpoints

 enable 1 diasble 1 是对断点的打开和关闭   delete 是删除断点 

         4.4 执行程序

         输入r或者run 运行或者在断点处停下 ,我刚刚设置第八行有断点

 输入next 或者 n 步进

        4.5显示程序变量

        输入print i 或者display i  查看变量值

        

        4.6信号管理

gdb可以模拟操作系统给被调试的应用程序发送信号

格式 signal <信号名称>

 此例是书上例子

首先在第40行设置断点,此时输入 signal SIGINT ,程序收到信号会调用第 38 行的响应函数 

5.多进程调试

        例子test1.c代码

 输入 gcc -g -o test1 test1.c   加入调试信息

输入./test1 ,另开一个终端输入 ps -e | grep test1

 

 切换到root用户

设置连接到3265进程后,gdb会自动查找test1文件并且加载

6.调试意外终止程序

         书上的例子,编译程序运行后,出错

 提示段错误,程序无法继续运行,会异常终止,核心已转储的意思是程序出错时环境已被转存

 

 

 ulimit -c 1024  作用时修改core 文件缓冲区 

 重新运行程序,再查看core文件

输入 gdb HttpDemo core   此例会显示这个

 

7.内核调试技术

        7.1.ptintk打印调试信息

        7.2 使用/proc虚拟文件

这里之后再补充

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值