代码之家  ›  专栏  ›  技术社区  ›  Ori Pessach

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

  •  4
  • Ori Pessach  · 技术社区  · 16 年前

    我想知道是否有办法做到以下几点:我有一个结构,其中包含一个成员,当我将该结构传递给API函数时,该成员是指向内核分配的内存块的指针(该结构是WAVEHDR,该成员是 含蓄的 字段。)

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

    我知道如何从宏设置断点,以及如何让Visual Studio在宏被命中时从断点调用该宏,但我不知道是否可以将指针值传递给宏,以便它可以在正确的地址上设置断点。UI没有提供这样做的方法。

    宏是否有办法访问有关正在运行的程序的信息,并执行诸如计算全局变量或其他表达式之类的操作?如果我能够通过宏对正在运行的代码进行编程访问(在断点期间),我就可以完成我正在尝试做的事情。

    2 回复  |  直到 12 年前
        1
  •  2
  •   Rob Walker    16 年前

    宏可以计算在“监视”窗口中可以计算的任何内容:

        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中得到的值正好是你在watch窗口中看到的字符串,所以你可能需要把它分开。Expression对象上还有许多其他属性可以使用。见 MSDN documentation .

        2
  •  0
  •   Nicholas Mancuso    16 年前

    我不确定这是否可能。我知道有条件断点,但这需要提前知道内存地址。。。

    在条件中断对话框中沿*p==0xADDRESS行的内容。