posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

Context Operator (C/C++ Language Expressions)

Posted on 2012-04-24 21:42 RTY 阅读(745) 评论(0)  编辑 收藏 引用 所属分类: C/C++Windows
MSDN

Context Operator (C/C++ Language Expressions)

Visual Studio 2008

 

This topic applies to:

Edition

Visual Basic

C#

C++

Web Developer

Express

Topic does not applyTopic does not apply

Native only

Topic does not apply

Standard

Topic does not applyTopic does not apply

Native only

Topic does not apply

Pro and Team

Topic does not applyTopic does not apply

Native only

Topic does not apply

Table legend:

Topic applies

Applies

Topic does not apply

Does not apply

Topic applies but command hidden by default

Command or commands hidden by default.

The context operator is an additional operator provided by the native debugger. When debugging native code, you can use the context operator to qualify a breakpoint location, variable name, or expression:

  • {[function],[source],[module] } location

  • {[function],[source],[module] } variable_name

  • {[function],[source],[module] } expression

The braces can contain any combination of function name, source file path, and module (executable or DLL) path. The context operator is useful for purposes such as specifying a name from an outer scope that is otherwise hidden by a local name.

To set a breakpoint at line 301 of EXAMPLE.CPP:

{,EXAMPLE.CPP,}@301 

If you omit either function or module, the two commas cannot be omitted. As a result, the following syntax is invalid:

{File.c, File.exe} @143 // Invalid syntax 

If you omit both source and module, however, you can omit the commas. The following syntax is valid:

{Fun} @143 

If the source or module path includes a comma, an embedded space, or a brace, you must use quotation marks around the path so that the context parser can properly recognize the string. Single quotation marks are considered part of a Windows file name, so you must use double quotation marks. For example,

{,"a long, long, name.c", } .143 

When the expression evaluator encounters a symbol in an expression, it searches for the symbol in the following order:

  1. Lexical scope outward, starting with the current block, series of statements enclosed in braces, and continuing outward with the enclosing block. The current block is the code containing the current location, instruction pointer address.

  2. Function scope. The current function.

  3. Class scope, if the current location is inside a C++ member function. Class scope includes all base classes. The expression evaluator uses the normal dominance rules.

  4. Current module.

  5. Global symbols.

  6. Other modules.

  7. Public symbols in the program.

With the context operator, you specify the starting point of the search and bypass the current location. You cannot specify a class, but you can specify a member function of the class and let the expression evaluator search outward.

Did you find this helpful?  
Community Content Add
Annotations FAQ

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理