Можно ли использовать команды windbg, такие как !locks
и .loadby sos mscorwks
, из командного окна Visual Studio (в сеансе отладки)? Я заметил, что могу использовать, например, k
для печати трассировки стека, поэтому мне было интересно, есть ли способ получить доступ к другим командам.
Использование windbg из Visual Studio
Ответы (3)
Да, ты можешь это сделать.
- Подключите Visual Studio 2008 к своему процессу для отладки.
- Взломайте какой-нибудь код.
- Перейти к немедленному окну
- Тип 1_
- Теперь вы можете использовать любую из команд windbg, например
!EEHeap,!DumpHeap
Есть некоторые условия. Вам необходимо включить отладку неуправляемого кода в свойствах вашего проекта. Обычно в 64-битной версии студия не поддерживает это.
Развлекайся.
!load sos
не работает на VS2013: «загрузка идентификатора не определена».
- person Werner Henze; 11.01.2016
Visual Studio 2012 имеет транспорт «Отладчик пользовательского режима Windows» в диалоговом окне «Присоединить к процессу». Это позволяет вам использовать команды windbg прямо в окне.
Источник: Использование WinDbg Engine при отладке в пользовательском режиме Visual Studio
Another caveat is that currently you need to install the WDK on top of Visual Studio 11 to get the debugger integration.
У меня тоже не работало, пока не установил WDK.
- person Kevin Smyth; 11.12.2014
!handle
или !locks
, теперь доступны из графического интерфейса VS (Immediate Window Debugger).
- person IInspectable; 15.12.2014
Начиная с Windows Driver Development Kit (WDK) 8.0, отладчик Windows интегрирован в Visual Studio (см. Среды отладки). Установка WDK поверх установки Visual Studio позволит разработчику выбрать несколько отладчиков в диалоговом окне Присоединить к процессу или установить механизм отладки в Отладчике проекта. настройки. Это было проверено для Visual Studio 2012 и 2013. Как я прочитал ссылку MSDN выше, это также должно работать для любой другой IDE, которая поддерживается WDK 8.0 и выше.
Хотя WinDbg предлагает множество мощных команд, есть и некоторые недостатки. Этот список не является исчерпывающим и содержит только те проблемы, с которыми я столкнулся:
- Невозможно подключиться к нескольким процессам одновременно. Хотя обычно это не проблема, это весьма прискорбно, если вам нужно отлаживать более одного процесса за раз. Отладчик Visual Studio может подключаться к любому количеству процессов одновременно.
- WinDbg не будет использовать настройки символов из вашей интегрированной среды разработки Visual Studio (проверено на VS 2012 с обновлением 4). Хотя вы можете настроить среду IDE для поиска отладочных символов, WinDbg не будет учитывать эти параметры. WinDbg будет использовать переменную среды _NT_SYMBOL_PATH и / или конфигурацию, установленную через
.sympath
. - Другой синтаксис для точек останова функции. Это незначительное раздражение, поскольку вы не можете использовать синтаксис Visual Studio для указания точек останова функции. Это также означает, что игнорируются точки останова функции, которые были установлены с использованием синтаксиса Visual Studio. Что еще более раздражает, вы получаете диалоговое окно с предупреждением для каждого при запуске отлаживаемой программы.
- Нет поддержки для Tracepoints. Я широко использую точки трассировки, чтобы ненавязчиво вставлять трассировку в отлаживаемую программу. Если вы также используете точки трассировки, это может оказаться больше, чем просто раздражением.
windbg
bp
принимает команду для запуска при достижении точки останова, поэтому вы можете имитировать точку трассировки. Например, bp combase!CoSetErrorInfo "dt combase!CErrorObject %edx; g"
- person Kevin Smyth; 13.04.2015