GDB简介

GDB是GNU项目中的调试器,用于跟踪和恢复程序执行,尤其在软件开发中必不可少。本文介绍了GDB的启动方式,包括直接启动、动态连接以及通过PID。详细讲解了断点调试,如软件断点、硬件断点和数据断点的设置及操作,并提供了数据断点和内存查看的使用示例。GDB是嵌入式开发中的重要工具,对于调试和问题定位非常有用。
摘要由CSDN通过智能技术生成

1 GDB简介

什么是GDB?
GNU项目中的调试器(gnu debuger),能够跟踪程序的执行,也能恢复程序崩溃前的状态。

为什么需要GDB?
软件不是一次性开发完成的(是软件就有bug,是程序就有问题),调试是软件开发过程中不可或缺的技术(调试工具很重要)。

GDB的常规应用

  • 自定义程序的启动方式(指定影响程序运行的参数)
  • 设置条件断点(在条件满足时暂停程序的执行)
  • 回溯检查导致程序异常结束的原因(Core Dump)
  • 动态改变程序执行流(定位问题的辅助方式)
      

GDB和addr2line工具的本质区别
addr2line是静态分析工具,关注的是程序文件;GDB是动态分析工具,关注的是进程。

2 GDB的启动方式

直接启动

  • gdb
  • gdb test.out
  • gdb test.out core

动态连接

  • gdb test.out pid

GDB应用举例

test.c

#include <stdio.h>
#include <unistd.h>

extern int* g_pointer;
extern void func();

void test_1()
{
    printf("test_1() : %p\n", test_1);
}

void test_2()
{
    printf("test_2() : %p\n", test_2);
}

void test_3()
{
    printf("test_3() : %p\n", test_3);
}

int main(int argc, 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值