Visual Studio 2010 中的编程数据断点

2024-02-07

我一直在尝试使用编程数据断点,就像CBreakpoint http://www.morearty.com/code/breakpoint/例如,通过使用SetThreadContext http://msdn.microsoft.com/en-us/library/windows/desktop/ms680632.aspx直接设置调试寄存器。我能找到的大多数参考资料都表明,只要 Visual Studio 遇到数据断点,它仍然会中断,即使它本身没有设置该数据断点。然而,这似乎并不是 Visual Studio 2010 的工作方式。

当程序没有被调试时,我的数据断点工作得很好(它崩溃了STATUS_SINGLE_STEP,这是数据断点引发的异常)。如果我使用 WinDbg 进行调试,它也会正确中断。但在 Visual Studio 2010 下调试它时,它似乎只是继续运行并忽略断点。有谁有在 Windows 7 下的 Visual Studio 2010 下使用以编程方式设置数据断点的经验吗?我需要做些什么才能打破它们吗? (我尝试添加STATUS_SINGLE_STEP到“第一次机会例外”列表,行为没有变化。)

或者,我可以做些什么来吞下STATUS_SINGLE_STEP调试器中出现异常?结构化异常处理程序会在调试器看到异常之前吃掉它吗?这是一个 x86_64 程序,有什么影响吗?我需要在 Visual Studio 2010 设置中进行一些操作吗?


做了一些测试,在 win7 x64 上安装了 VS 2010 SP1 Ultimate,使用 32 位二进制文​​件在硬件断点上正确中断(带或不带 SEH)。然而,当使用 64 位二进制文​​件时,它不会捕获单个步骤(并且我必须更改一些类型才能使其编译)。

深入挖掘一下,VS 的行为似乎很奇怪,因为虽然它没有捕获单步,但我无法让它正确地跳过将触发硬件断点的代码段。

我有一种感觉,该库没有正确设置 x64 下的 DR 寄存器,这可能是为了进行更改SetThreadContext对于 x64。

Update

稍微摆弄一下,我注意到您正在使用的库在设置或获取线程上下文之前不会暂停线程,MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/ms679362%28v=vs.85%29.aspx说这是一个很大的禁忌:

您无法获取正在运行的线程的有效上下文。在调用 GetThreadContext 之前使用 SuspendThread 函数挂起线程。

然而,即使使用另一个图书馆 http://www.codeproject.com/Articles/28071/Toggle-hardware-data-read-execute-breakpoints-prog正确地挂起目标线程并无错误地执行其所有调用仍然不会让 VS 捕获 BP,这让我认为不仅您使用的库有错误,而且 VS 的 x64 调试器也有错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio 2010 中的编程数据断点 的相关文章

随机推荐

  • 如何获取两列组合的最后一条记录?

    我遇到的情况我认为可以与 CamelCamelCamel Keepa 等服务进行比较 假设我每天跟踪几个国家 地区的一篇文章的价格 所以我的桌子 我们称之为Trend 看起来像这样 Id Created ArticleId Country
  • 使用 GridView 在 Yii2.0 中显示过滤器的空白行

    我已经设置 GridView 在 Yii2 0 中创建我的表 如下所示
  • Windows SDK 7.1 安装失败

    我正在尝试使用 NET Framework 4 安装适用于 Windows 7 的 Windows SDK 但是当我打开安装程序时收到错误 某些 Windows SDK 组件需要 RTM NET Framework 4 设置 检测到 NET
  • Hadoop 中未找到类异常

    我正在尝试运行一个 hadoop 单单元程序来进行字数统计 我在 Windows 10 64 位和 Cygwin 上执行此操作 这是我正在使用的程序 import java io IOException import java util S
  • C# 中的 for 和 while 循环

    for i 0 i lt 10 i i 0 while i lt 10 i for 和 while 循环 哪个性能更好 更新 实际上 有一种情况for构建更高效 在数组上循环 编译器 JIT 针对这种情况进行了优化只要你使用 arr Len
  • ReferenceError:“工作表”未定义

    这是我第一次尝试使用脚本编辑器 我被分配编写一个脚本来为谷歌表格创建数据透视表 creating pivot table through script editor for google sheet function addPivotTab
  • 手动安装 Xcode 命令行工具不起作用

    我已经从 Apple 网站手动安装了 Xcode 命令行工具 并且完成了安装过程 但它似乎不起作用 我从终端运行它来查看它是否已安装 Zach Boyette MacBook Pro 2 zachboyette pkgutil pkg in
  • 一个好的数据库建模工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将我在提交中更改的行中的空格转换为制表符

    我已经对 git repo 进行了相当大的提交 更改了 60 个文件 插入了 1635 个 删除了 3 个 现在我意识到我使用了空格进行缩进 而其余代码则使用了制表符 因此 我想替换制表符的空格 但仅限于该提交更改的行 因为我不想修改可能使
  • Kube-Proxy-Windows CrashLoopBackOff

    安装过程 我是 Kubernetes 的新手 目前正在 Azure VM 内设置 Kubernetes 集群 我想部署 Windows 容器 但为了实现此目的 我需要添加 Windows 工作节点 我已经部署了一个具有 3 个主节点和 1
  • 通过 Powershell 进行智能图像搜索

    我对按自定义属性搜索文件感兴趣 例如 我想查找具有特定尺寸的所有 JPEG 图像 有些东西看起来像 Get ChildItem Path C Filter jpg Recursive where object Dimension eq 10
  • 同一视图中的普通模型和 IEnumerable 模型

    有一个小问题 我自己解决不了 我想在一个视图中使用相同的模型 但一次使用 IEnumerable 第二次不使用它 My View model IEnumerable
  • Apple Interface Builder:向 UIImageView 添加子视图

    我创建UIImageView在 Interface Bulder 的帮助下 现在我想在其中放置标签 作为其子视图 在代码中我可以输入如下内容 myUIImageView addSubview myUILabel 但我可以在IB的帮助下做到这
  • Java什么时候调用垃圾收集器

    我读了很多关于 Java 堆的文章 我看到如果我们得到 java lang OutOfMemoryError 我们应该增加 Xmx 来解决这个问题 for e g java Xmx2048m Xms256m 这会将 Java 使用的堆内存增
  • 在 Windows 上安装 PG Gem 时出错

    我使用 XAMPP 作为 PostgreSQL 9 3 的安装文件夹 C xampp pgsql 9 3 现在我尝试使用该目录作为参考来安装 PostgreSQL gem gem install pg with pg include C x
  • R 中的“抖动”函数有什么作用?

    根据文档 http astrostatistics psu edu su07 R html base html jitter html 的解释为jitter函数是 向数字向量添加少量噪声 这是什么意思 是否有一个随机数与向量中的每个数字相关
  • 使用 Tkinter 中的按钮终止线程

    在我的 GUI 代码中 我尝试通过单击一个按钮来同时运行循环 1 和循环 2 因此 我用了Thread为了达成这个 但我也尝试通过单击另一个按钮来阻止它 但失败了 在stackoverflow上搜索后发现没有直接杀死的方法Thread 这是
  • Rails 4:f.select 返回字符串而不是整数

    我有用户注册表格 用户必须通过选择选项选择他的国家 地区 当我提交表单时 我收到错误 Country 70309119520500 Expected got String 8039220 请帮助我如何将字符串转换为整数 以便我可以在数据库中
  • OpenGL ES 中使用的 3d 立方体的法线是什么?

    我有一个立方体定义为 float vertices Vertices according to faces 1 0f 1 0f 1 0f Vertex 0 1 0f 1 0f 1 0f v1 1 0f 1 0f 1 0f v2 1 0f 1
  • Visual Studio 2010 中的编程数据断点

    我一直在尝试使用编程数据断点 就像CBreakpoint http www morearty com code breakpoint 例如 通过使用SetThreadContext http msdn microsoft com en us