首页 > 其他分享 >使用GDB调试断点信息是gdb动态添加或取消的还是将断点烧录到elf文件的?断点信息是如何加载进单片机的并进行加下来的调试运行的?

使用GDB调试断点信息是gdb动态添加或取消的还是将断点烧录到elf文件的?断点信息是如何加载进单片机的并进行加下来的调试运行的?

时间:2023-06-08 11:48:05浏览次数:45  
标签:烧录 硬件 单片机 GDB 断点 调试 调试器

使用GDB调试断点信息是gdb动态添加或取消的还是将断点烧录到elf文件的?断点信息是如何加载进单片机的并进行加下来的调试运行的?

 

from :GPT-4

GDB(GNU调试器)是一个用于调试程序的强大工具,它可以让你设置断点、检查变量和内存、执行单步调试等。在单片机(微控制器)上使用GDB进行调试时,通常需要一个硬件调试器,例如JTAG或SWD,这些硬件调试器可以与单片机进行通信以实现调试功能。

在使用GDB调试时,断点信息是动态添加或取消的,而不是烧录到ELF文件中。GDB与硬件调试器一起使用时,它会将断点信息发送给硬件调试器,然后硬件调试器会将这些断点设置到单片机上。这里的关键是实现硬件调试器和单片机之间的通信,以便在运行过程中适时地停止代码执行并将控制权交还给GDB。

具体地说,GDB在设置断点时,会通过硬件调试器向单片机发送相应的命令,以在指定的内存地址上设置断点。通常,硬件调试器会将指定地址处的指令替换为一条专用的断点指令(例如ARM架构中的BKPT指令)。当单片机执行到该指令时,它会被中断并将控制权交给硬件调试器,然后硬件调试器会通知GDB已经到达了设置的断点。此时,你可以在GDB中查看和修改内存、寄存器等内容,执行单步调试等操作。

当你继续执行程序时,硬件调试器会将断点指令替换回原始指令,并继续执行。类似地,当你取消断点时,GDB会通过硬件调试器将原始指令恢复到对应的内存地址上。

总之,GDB通过与硬件调试器的配合,实现了在单片机上动态添加、取消断点和其他调试功能。断点信息是在运行过程中通过硬件调试器设置和取消的,而不是烧录到ELF文件中。

 

断点信息是通过 GDB 协议进行调试时动态添加和取消的,而不是在编译过程中直接嵌入到 ELF 文件中。

gcc-g是将调试的通用信息烧录到elf文件的,而不是将具体断点烧录进去的。

标签:烧录,硬件,单片机,GDB,断点,调试,调试器
From: https://www.cnblogs.com/zhouxingxing7920/p/17465425.html

相关文章

  • AUTOSAR笔记:工程代码集成与调试(七)
    目录工程代码架构、集成方法代码编译链接代码调试MCU可执行文件下载完成AUTOSAR系统级、ECU级、SWC级相关开发和代码生成后,需要进行代码集成与调试。本文对AUTOSAR工程代码架构、集成、编译链接、调试方法进行简单介绍。工程代码架构、集成方法一套完整的符合AUTOSAR规范的ECU......
  • ESP32的JTAG调试
    JTAG使用手册准备工作:硬件:必备硬件ESP32-S3-DevKitC-1USB2.0数据线(标准A型转Micro-B型)电脑(Windows、Linux或macOS)硬件设置以ESP32-S3-DevKitC-1开发板举例:该开发板有两个USB接口,其中一个为USBPort,另一个为USB-to-UARTPortUSBPort(USB接口):ESP32-S3......
  • [网络调试]在内网接口配置nat hairpin enable测试不生效问题
    用户反馈F1030在内网接口启用nathairpinenable功能后,内网PC通过公网映射地址无法访问到内部服务器。现场F1030使用Ess9308P05版本,检查映射相关配置未发现问题。沟通了解,在公网上通过公网映射地址可以正常访问服务器,内网PC通过服务器私网地址也可以正常访问服务器,初步排除服......
  • h5移动端页面调试工具Chii与 weinre 一样的远程调试工具
    与 weinre 一样的远程调试工具,主要是将webinspector替换为最新的 chromedevtoolsfrontend.电脑上跑一个chii服务,把对应的js嵌入h5页面内,用手机访问h5页面,chrome内看chii服务地址即可找到对应管理控制台  安装可以通过npm安装。npminstallchii-g 使用......
  • GDB 调试指令
     GDB调试指令arm-none-eabi-gdbexample.elftarext:50000ib  //查看所有断点ir  //查看内存寄存器break16   //设置断点,在源程序第16行处。breakfunc  //设置断点,在函数func()入口处infobreak  //查看断点信息。list    //查看调试文件n......
  • 如何在运行并调试React Native App
     1.进入工程目录,启动:Metro  npxreact-nativestart 2.然后在新的terminal窗口中运行app   npxreact-nativerun-ios第1,2步参考:https://reactnative.dev/docs/environment-setup#running-your-react-native-application这时你的程序应该运行起来了。每次操作可......
  • ESP32的JTAG调试方法
    ReportofJTAGIntroduction:Figuringoutabugthatiscausedbytwothreads,runningevensimultaneouslyontwodifferentCPUcores,cantakealongtimewhenallyouhaveareprintf()statements.Abetter(andinmanycasesquicker)waytodebugsuch......
  • pycharm的scrapy框架-断点调试
    在文件根目录,也就是settings.py的上级目录,scrapy.cfg的同级目录,创建main.py:fromscrapy.cmdlineimportexecuteimportosimportsysif__name__=='__main__':sys.path.append(os.path.dirname(os.path.abspath(__file__)))execute(['scrapy','crawl......
  • Grafana 汉化调试(四)
    Grafana汉化调试(四)Grafana最新的9.5.2版本现在已经支持中文了,不用再安装插件去汉化了1、首先进入用户的个人资料2、把语言类型修改成“中文(简体)”3、保存修改4、这是发现界面已经变成中文了......
  • 关于荣耀X40打开USB调试之后仍然无法连接adb
    解决方案:1-打开开发者选项关于手机-多次点击版本号-提示您正处于开发者选项模式2-进入系统和更新-点击开发人员选项-开启USB调试备注:此时输出adbdevices可能无法连接,需要进一步进行设置3-选择USB配置,勾选RNDIS(USB以太网),会弹出......