Visual Studio 调试器中的上下文运算符(C++)

可以在C++中使用上下文运算符来限定断点位置、变量名称或表达式。 上下文运算符用于指定一个外部范围的名称,而该名称通常会被本地名称隐藏。

Syntax

有两种方法可以指定上下文:

  1. {,[module] } 表达式

    大括号必须包含两个逗号和模块(可执行文件或 DLL)名称或完整路径。

    例如,要在 SomeFunctionEXAMPLE.dll函数处设置断点:

    {,,EXAMPLE.dll}SomeFunction
    
  2. 模块表达式

    EXAMPLE.dll!SomeFunction
    
  • 模块 是模块的名称。 可以使用完整路径在具有相同名称的模块之间消除歧义。

    如果 模块 路径包含逗号、嵌入空格或大括号,则必须在路径周围使用引号,以便上下文分析器能够正确识别字符串。 单引号被视为 Windows 文件名的一部分,因此必须使用双引号。 例如,

    {,,"a long, long, library name.dll"} g_Var
    
  • 表达式 是解析为有效目标的任意有效C++表达式,例如 模块中的函数名称、变量名或指针地址。

    当表达式计算器在表达式中遇到符号时,它会按以下顺序搜索符号:

  1. 词法作用域从当前块向外扩展,首先是大括号中包含的一系列语句,然后继续向外扩展到包围块。 当前块是包含当前位置指令指针地址的代码。

  2. 函数范围。 当前函数。

  3. 类范围,如果当前位置位于C++成员函数内。 类范围包括所有基类。 表达式计算器使用普通优先级规则。

  4. 当前模块中的全局符号。

  5. 当前程序中的公共符号。