Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
При создании точки останова можно использовать следующие элементы синтаксиса с помощью окна команды отладчика или графического интерфейса 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).
Более универсальный метод — использовать синтаксис @!"символы". Это специальный механизм экранирования в вычислителе 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="
В этом примере Имя исполняемого файла — это имя исполняемого файла.
Этот синтаксис escape-кода более полезен для C++ (например, перегруженных операторов) вместо C, так как в именах функций C нет пробелов (или специальных символов). Однако этот синтаксис также важен для большого количества управляемого кода из-за значительного использования перегрузки в .NET Framework.
Чтобы задать точку останова для произвольного текста в синтаксисе C++, используйте bu @@c++(text) для символов, совместимых с C++.
Точки останова в скриптах
Идентификаторы точек останова не обязательно должны упоминаться явно. Вместо этого можно использовать числовое выражение, которое вычисляется в целое число, соответствующее идентификатору точки останова. Чтобы указать, что выражение должно быть интерпретировано как точка останова, используйте следующий синтаксис.
b?[Expression]
В этом синтаксисе необходимы квадратные скобки, а выражение — любое числовое выражение, превращающееся в целое число, соответствующее идентификатору точки останова.
Этот синтаксис позволяет скриптам отладчика программно выбрать точку останова. В следующем примере точка останова изменяется в зависимости от значения определяемого пользователем псевдорегистрирующего регистра.
b?[@$t0]
Псевдорегистры точек останова
Если вы хотите ссылаться на адрес точки останова в выражении, можно использовать псевдорегистрирующий регистр с синтаксисом $bpNumber , где Число — это идентификатор точки останова. Для получения дополнительных сведений об этом синтаксисе см. Pseudo-Register Syntax.
Неоднозначность в решении точек останова
В версии 10.0.25310.1001 и более поздних версиях движка отладчика теперь поддерживается разрешение неоднозначных точек останова. Неоднозначные точки останова позволяют отладчику задавать точки останова в определенных сценариях, когда выражение точки останова разрешается в несколько расположений. Дополнительные сведения см. в разделе "Неоднозначное разрешение точек останова".