我可以在 GDB 的“内存访问”上设置断点吗?

2023-12-27

我正在通过 gdb 运行应用程序,并且我想在访问/更改特定变量的任何时间设置断点。有没有好的方法来做到这一点?我也对监视 C/C++ 中的变量以查看它是否/何时发生变化的其他方法感兴趣。


watch仅在写入时中断,rwatch让你继续阅读,并且awatch让你在读/写时中断。

您可以在内存位置设置读取观察点:

gdb$ rwatch *0xfeedface
Hardware read watchpoint 2: *0xfeedface

但 rwatch 和 awatch 命令有一个限制;你不能使用 gdb 变量 在表达式中:

gdb$ rwatch $ebx+0xec1a04f
Expression cannot be implemented with read/access watchpoint.

所以你必须自己扩展它们:

gdb$ print $ebx 
$13 = 0x135700
gdb$ rwatch *0x135700+0xec1a04f
Hardware read watchpoint 3: *0x135700 + 0xec1a04f
gdb$ c
Hardware read watchpoint 3: *0x135700 + 0xec1a04f

Value = 0xec34daf
0x9527d6e7 in objc_msgSend ()

Edit:哦,顺便说一句。您需要任一硬件或软件支持。软件显然要慢得多。要了解您的操作系统是否支持硬件观察点,您可以查看可以使用硬件观察点环境设置。

gdb$ show can-use-hw-watchpoints
Debugger's willingness to use watchpoint hardware is 1.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在 GDB 的“内存访问”上设置断点吗? 的相关文章

随机推荐

  • memcpy 不会抛出异常吗?

    希望这个问题有一个简单的答案 因为这似乎是一个简单的问题 但是我无法在互联网上找到任何有关此问题的信息 在下面的代码片段中 Visual Studio 抱怨 delete bytes 行的代码无法访问 try memcpy bytes ot
  • 比较表达式语言中的字符串和布尔值

    我有这种行为我不太理解 someVar someVar class name someVar error outputs false java lang Boolean true 怎么解释呢 为了首先测试两个 事物 是否具有相同的类型 然后
  • “require_tree 参数必须是目录”rails 3.1.1 预编译资产

    我在这里一直在尝试让资产在我的生产服务器上进行预编译 使用 ruby 1 9 2 和 Rails 3 1 1 进行简单的 ubuntu 安装 并尝试使用新的 sprockets 2 10 进行 3 1 2RC require tree 参数
  • Bash 匿名管道

    在设计执行特定任务的命令链时 我遇到了匿名管道的行为与预期不同的问题 由于我运行的原始命令太复杂 无法在此处解释 因此我创建了一个示例来显示问题 我知道所有这些命令基本上什么也没做 另外 我使用 pv 来显示数据是否实际上从输入复制到输出
  • LWJGL'java.lang.UnsatisfiedLinkError':java.library.path中没有lwjgl

    Exception in thread main java lang UnsatisfiedLinkError no lwjgl in java libr ary path at java lang ClassLoader loadLibr
  • Windows 商店应用程序 - 显示 PDF

    我正在创建一个 Windows 商店应用程序 以前称为 Metro 应用程序 它能够读入并显示几种不同的文件类型 jpg wmv pdf 等 每种文件类型都使用适当的 XAML 控件显示 例如 jpg 使用 Image wmv 使用 Med
  • 生成的代码与 PyOTP 示例不匹配

    当我发现时 我正在寻找基于 Python 时间的 OTP 库PyOtp https github com pyotp pyotp 我扫描了示例二维码 使用 Google Authenticator 并运行关联的示例代码 import pyo
  • PHP7 - 连接到sybase数据库

    http php net manual en function sybase connect php http php net manual en function sybase connect php从 PHP7 开始被删除 所以现在我收
  • Docker突然无法识别-p命令

    所以我刚刚在我的 Mac 上更新了 Docker 并且适应 Docker 似乎相当具有挑战性和令人困惑 几周前 我能够通过运行以下命令将 docker 容器上的端口 8834 转移到本地主机上的端口 8834 这是我的命令行历史记录 845
  • UITextView linkTextAttributes 字体属性不适用于 NSAttributedString

    我有一个NSAttributedString从包含一些链接的 HTML 生成 属性字符串显示在 UITextView 中 我希望为链接应用不同的字体样式并正在设置linkTextAttributes为了这 我已经添加NSForeground
  • 如何使自动续订订阅与内部用户而不是 Apple ID 绑定?

    我似乎遇到了障碍 但本质上我在应用程序中拥有的是用户登录页面和创建帐户页面 当用户打开我的应用程序并创建新帐户时 他们的信息将存储在 Firebase 服务器 BaSS 上 现在我的问题是我将如何去做 以便对于通过我的应用程序创建帐户的每个
  • 在 Windows 中更改 org.eclipse.swt.widgets 背景颜色

    现在我正在尝试使用以下代码更改 org eclipse swt widgets Button 的背景颜色 Button sceneButton new Button border SWT TOGGLE SWT FLAT sceneButto
  • 识别矩阵中的值

    我有一个问题 然后我需要你的帮助来解决它 我有一个矩阵A A 0 0 1 2 3 4 0 1 2 3 4 0 0 0 0 0 0 1 2 3 4 0 1 2 3 4 0 0 然后我想知道矩阵 A 中每行的每个值 1 的个数与矩阵 A 中每行
  • ReferenceError:请求未定义

    我正在尝试复制一个脸书消息机器人 https developers facebook com docs messenger platform guides quick start但继续得到request is not defined 与 F
  • Prettier.js 方法关于换行格式的参数

    我正在运行 Prettier js VSCode 插件 prettier eslint cli 它将超过 80 个字符限制的方法参数格式化如下 将每个参数放在新行中 someMethod argumentOne argumentTwo ar
  • 值表/树

    我的问题 有没有办法创建价值树 类似于命令 TreeForm 的输出 但是节点中的值呢 我为什么要这个 我正在尝试编写一个完整的程序来分析我的实验课程的输出 每列数据作为一个符号分配 一般来说 每一列都是有意义的 它不仅仅是一堆不同的变量
  • 如何创建点分
    标签? [复制]

    这个问题在这里已经有答案了 如何使用 CSS 创建虚线或任何类型的 hr 线 双线 虚线等 hr 或者还有其他技巧吗 你可以有 hr style border top dotted 1px 那应该有效
  • 访问 json 树的叶子

    我有一个以下形式的 JSON 文件 id 442500000116137984 reply 0 children id 442502378957201408 reply 0 children id 442500001084612608 re
  • RestKit 映射 XML 元素主体

    如何为 XML 元素主体创建 RestKit 对象映射到对象属性 XML
  • 我可以在 GDB 的“内存访问”上设置断点吗?

    我正在通过 gdb 运行应用程序 并且我想在访问 更改特定变量的任何时间设置断点 有没有好的方法来做到这一点 我也对监视 C C 中的变量以查看它是否 何时发生变化的其他方法感兴趣 watch仅在写入时中断 rwatch让你继续阅读 并且a