Псевдопеременные в отладчике Visual Studio
Псевдопеременные — термины, используемые для отображения определенных сведений в окне переменных или в диалоговом окне Быстрая проверка. Псевдопеременная вводится таким же способом, что и обычная переменная. Однако псевдопеременные не являются переменными и не соответствуют именам переменных в программе.
Пример
Предположим, что вы пишете приложение на исходном коде, и хотите просмотреть общее число дескрипторов в приложении. В окне Контрольные значения можно ввести следующую псевдопеременную в столбце Имя, затем нажать "Возврат" для вычисления:
$handles
В нативном коде можно использовать псевдопеременные, указанные в этой таблице:
Псевдопеременная | Function |
---|---|
$err |
Отображает последнее значение ошибки, заданное функцией SetLastError. Представляет значение, которое показывает, что будет возвращено функцией GetLastError. Используйте $err,hr , чтобы посмотреть расшифрованную форму этого значения. Например, если последняя ошибка имела значение 3, $err,hr отобразит сообщение ERROR_PATH_NOT_FOUND : The system cannot find the path specified. |
$handles |
Показывает число дескрипторов в приложении. |
$vframe |
Выводит адрес текущего кадра стека. |
$tid |
Отображает идентификатор текущего потока. |
$env |
Отображает блок среды в средстве просмотра строк. |
$cmdline |
Отображает строковую переменную командной строки, которая запустила программу. |
$pid |
Отображает идентификатор процесса. |
$ registernameor @ registername |
Отображает содержимое регистра имярегистра. Как правило, можно отобразить содержимое регистра простым вводом имени регистра. Единственный момент, когда необходимо использовать такой синтаксис, это когда имя регистра перегружает имя переменной. Если имя регистра совпадает с именем переменной в текущей области, отладчик интерпретирует имя как имя переменной. В таком случае удобно использовать $ имярегистра@ или имярегистра. |
$clk |
Отображает время в циклах синхронизации. |
$user |
Отображает структуру с данными учетной записи для учетной записи, под которой выполняется приложение. По соображениям безопасности сведения о паролях не отображаются. |
$exceptionstack |
Отображает трассировку стека текущего исключения среды выполнения Windows. $ exceptionstack работает только в приложениях UWP. $ exceptionstack не поддерживается для исключений C++ и SEH. |
$returnvalue |
Отображает возвращаемое значение метода. |
В C# можно использовать псевдопеременные, указанные в этой таблице.
Псевдопеременная | Function |
---|---|
$exception |
Отображает сведения о последнем исключении. Если исключения не было, вычисление $exception отображает сообщение об ошибке.При отключенном помощнике по исключениям $exception автоматически добавляется в окно Локальные при возникновении исключения. |
$user |
Отображает структуру с данными учетной записи для учетной записи, под которой выполняется приложение. По соображениям безопасности сведения о паролях не отображаются. |
$returnvalue |
Отображает возвращаемое значение метода .NET. |
$threadSmallObjectHeapBytes |
Отображает общее количество байтов, выделенных в куче небольших объектов текущим потоком. (.NET 6+) |
$threadUserOldHeapBytes |
Отображает общее количество байтов, выделенных в старой куче пользователя текущим потоком. User Old Heap = Large Object Heap + Pinned Object Heap (.NET 6+) |
В Visual Basic можно использовать псевдопеременные, указанные в этой таблице:
Псевдопеременная | Function |
---|---|
$exception |
Отображает сведения о последнем исключении. Если исключения не было, вычисление $exception отображает сообщение об ошибке. |
$delete или $$delete |
Удаляет неявную переменную, которая была создана в окне Интерпретация. Синтаксис: переменная $delete, или переменная $delete, . . |
$objectids или $listobjectids |
Отображает все идентификаторы активных объектов в виде дочерних элементов указанного выражения. Синтаксис: выражение $objectid, или выражение $listobjectids, . . |
$ N # |
Отображает объект с идентификатором, равным N. |
$dynamic |
Отображает специальный узел динамического представления для объекта, который реализует IDynamicMetaObjectProvider . Интерфейс. Синтаксис: объект $dynamic, . Эта функция применима только к коду, который использует версию .NET Framework 4 и выше. |