使用GDB Sever调试程序提示Warning: Cannot insert breakpoint X. Cannot access memory at address 0xXXXXXX

问题描述

在使用GDB添加断点之后提示断点加入成功,输入Continue命令提示如下的错误信息:

Warning:
Cannot insert breakpoint 3.
Cannot access memory at address 0x722ae8

Command aborted.

秉着遇事百度的原则,先上网搜索一波,得到了以下几种类似的情况:

  1. 断点添加位置与主程序非同一进程,因此在插入断点时失败
  2. 插入的断点为地址类型的断点,程序不一定包含此地址,因此无法插入断点
  3. 开始调试前确保已经运行GDB的starti命令

解决过程

首先描述一下问题出现的步骤,便于定位问题

  • GDB的调试方式为GDB Sever调试,先前可正常工作
  • 同事调试时遇到上述问题,想使用我的环境调试其板卡,因此在本人环境进行调试
  • 远程连接之后本人环境出现以上错误

问题分析

  • 第一种情况很明显是多进程才会出现的问题,直接排除
  • 由于插入的断点是函数类型,且为排除问题,插入的是先前正常调试的接口,因此第二种问题也排除
  • 在GDB Server环境输入run命令和start命令,直接提示远程连接不支持该命令

既然以上问题都不正确,则需要对上述情况进行具体分析,接下来分享问题解决的思路

  1. 重新删除所有断点,排除断点问题
  2. 重新运行GDB,排除GDB程序故障
  3. 查看本地可执行文件是否和远端可执行文件相同

此次问题就属于第三种情况,希望此次记录可以帮助有需要的人!可能问题产生的原因比较简单,也比较低级,但希望解决思路可以读者启发,举一反三,解决困扰你的问题

猜你喜欢

转载自blog.csdn.net/Wangguang_/article/details/121388316
今日推荐