GDB那些事之《gdb internal》读书笔记

本文是《gdb internal》的读书笔记,主要探讨了GDB的整体结构,包括用户接口、符号处理和目标系统处理。重点讲解了帧(frame)、断点(breakpoint)和观察点(watchpoint)的概念与实现,以及GDB对不同硬件架构的支持。此外,还提及了用户接口的实现和扩展,以及GDB对多种语言和调试文件格式的支持。
摘要由CSDN通过智能技术生成

GDB那些事之《gdb internal》读书笔记

  1. 第二章 整体结构
    • GDB总体上分为三个部分
      用户接口(user interface),主要是一些用户可以使用的命令,说明之类
      符号处理(symbol handling),主要是各种object文件读取,源代码语言的parse、类型判断,调试信息的解释,符号表的管理等
      目标系统处理(target system handling),主要是控制逻辑,程序运行stack frame的分析,真实运行的目标系统的管理操作(比如remote到嵌入式设备)

      这里注意,因为host和target很有可能不是一种architecture, gdb需要在这两者之间进行通信,做必要的转换。这也带来了一些不变及限制。

    • Frame
      用来记录所有函数的调用关系
      GDB中使用create_new_frame, 相应的代码时frame.c

    • 软件断点和硬件断点(Breakpoint)
      硬件断点需要不同的chip的支持,如果遇到需要查询相应的硬件手册及gdb对其的支持(从来没有遇见过,这里可耻的skip,留待以后有缘再补上)

      软件断点,GDB通过在用户设置的断点处,保存现场,并插入trap(能够出发exception的指令),从而中断程序执行,再根据用户的指令来进行之后的动作,如果用户选择继续,则恢复现场,继续执行相应指令

      相应的代码是:breakpoint.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值