Поделиться через


Синтаксис точки останова

Приведенные ниже элементы синтаксиса можно использовать при создании точки останова в окне команд отладчика или графическом интерфейсе WinDbg.

Адреса в точках останова

Точки останова поддерживают различные виды синтаксиса адресов, включая виртуальные адреса, смещения функций и номера строк источника. Например, для задания точек останова можно использовать любую из следующих команд:

0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`

Дополнительные сведения об этом синтаксисе см. в разделах Синтаксис числовых выражений, Синтаксис исходной строки и отдельные команды.

Точки останова в методах

Если вы хотите поставить точку останова в методе MyMethod в классе MyClass , можно использовать два разных синтаксиса:

  • В синтаксисе выражений MASM метод можно указать двойным двоеточием или двойным подчеркиванием.

    0:000> bp MyClass::MyMethod 
    0:000> bp MyClass__MyMethod 
    
  • В синтаксисе выражений C++ метод необходимо указать двойным двоеточием.

    0:000> bp @@( MyClass::MyMethod ) 
    

Если вы хотите использовать более сложную команду точки останова, следует использовать синтаксис выражений MASM. Дополнительные сведения о синтаксисе выражений см. в разделе Вычисление выражений.

Точки останова с использованием сложных выражений MASM

Чтобы задать точку останова для сложных функций, включая функции, содержащие пробелы, а также член открытого класса C++, заключите выражение в круглые скобки. Например, используйте bp (?? MyPublic) или bp (оператор new).

Более универсальным методом является использование @!" синтаксис chars". Это специальный escape-экран в оценщике MASM, который позволяет предоставлять произвольный текст для разрешения символов. Необходимо начать с трех символов @!" и заканчиваться кавычками ("). Без этого синтаксиса нельзя использовать пробелы, угловые скобки (<, >) или другие специальные символы в именах символов в вычислителя MASM. Этот синтаксис предназначен исключительно для имен, а не для параметров. Шаблоны и перегрузки являются основными источниками символов, для которых требуется нотация в кавычках. Вы также можете задать команду bu с помощью @!" Синтаксис chars", как показано в следующем примере кода.

0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="

В этом примере ExecutableName — это имя исполняемого файла.

Этот escape-синтаксис более удобен для C++ (например, перегруженных операторов) вместо C, так как в именах функций C нет пробелов (или специальных символов). Однако этот синтаксис также важен для большого количества управляемого кода из-за значительного использования перегрузок в платформа .NET Framework.

Чтобы задать точку останова для произвольного текста в синтаксисе C++, используйте bu @@c++(text) для символов, совместимых с C++.

Точки останова в скриптах

На идентификаторы точек останова не нужно ссылаться явным образом. Вместо этого можно использовать числовое выражение, которое разрешается в целое число, соответствующее идентификатору точки останова. Чтобы указать, что выражение должно интерпретироваться как точка останова, используйте следующий синтаксис.

b?[Expression]

В этом синтаксисе квадратные скобки являются обязательными, а выражение означает любое числовое выражение, которое разрешается в целое число, соответствующее идентификатору точки останова.

Этот синтаксис позволяет скриптам отладчика программно выбирать точку останова. В следующем примере точка останова изменяется в зависимости от значения определяемого пользователем псевдорегистра.

b?[@$t0]

Псевдорегистры точек останова

Если вы хотите ссылаться на адрес точки останова в выражении, можно использовать псевдорегистрару с синтаксисом $bpNumber , где Number — это идентификатор точки останова. Дополнительные сведения об этом синтаксисе см. в разделе Синтаксис Pseudo-Register.

Неоднозначное разрешение точек останова

В отладчике версии 10.0.25310.1001 и более поздних версиях поддерживается неоднозначное разрешение точек останова. Неоднозначные точки останова позволяют отладчику задавать точки останова в определенных сценариях, где выражение точки останова разрешается в несколько расположений. Дополнительные сведения см. в разделе Неоднозначное разрешение точек останова.

См. также

Использование точек останова

Синтаксис точки останова

bp, bu, bm (установка точки останова)

Неразрешенные точки останова (bu Точки останова)