c++ - 在 Visual Studio 2005 中的取消引用指针的地址上设置数据断点

标签 c++ c visual-studio-2005 debugging

我想知道是否有办法执行以下操作:我有一个结构包含一个成员,当我将结构传递给 API 函数时,该成员是指向内核分配的内存块的指针(该结构是一个 WAVEHDR,成员是保留字段。)

我可以在保留成员的值上设置一个数据断点——这本身并不是很有帮助。当遇到断点时,我想做的是取消引用存储在 reserved 中的指针,并在该指针指向的内存上设置一个新的数据断点。当该内存设置为已知值时,我希望 VisualStudio 中断。

我知道如何从宏设置断点,以及如何让 Visual Studio 在遇到断点时从断点调用该宏,但我不知道是否可以将指针值传递给宏,以便它可以在正确的地址上设置断点。 UI 不提供执行此操作的方法。

有没有办法让宏访问有关正在运行的程序的信息,并执行诸如评估全局变量或其他表达式之类的事情?如果我可以从宏中以编程方式访问正在运行的代码(在断点期间),我就可以完成我想做的事情。

最佳答案

宏可以评估您在监 window 口中可以评估的任何内容:

    Dim e As EnvDTE.Expression

    e = DTE.Debugger.GetExpression("<my expression>", True)

    If e.IsValidValue Then
        ... use e.Value to do something
    End If

您在 e.Value 中返回的值正是您在监 window 口中看到的字符串,因此您可能需要将其拆开。您还可以使用 Expression 对象上的许多其他属性。查看MSDN documentation .

关于c++ - 在 Visual Studio 2005 中的取消引用指针的地址上设置数据断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/183991/

相关文章:

c++ - 使用大小为 8 的未初始化值

c++ - 禁用 ListView 中的项目变灰

java - 测试随机数

c++ - 我如何找到 Win32 中的资源泄漏?

visual-c++ - 如何在 native C++ 项目中使用 tlb 文件

C++ 模板化容器类 : How to best support both ordered and un-ordered item types?

c++ - map 的插入排序

python - Python 源代码 "free_list = (PyIntObject *)Py_TYPE(v);"如何将指针 free_list 移动到下一个对象?

.net - C double 与 .NET double 不同吗?

vb.net - 当遇到断点时,如何防止 Visual Studio 编辑器自动水平滚动