Инструменты Отладки Для Windows

Раньше я не знал, что такое предмет и не умел им пользоваться.

Теперь я знаю немного и впечатлен.

Расскажу о своем опыте общения с ним, может кому-то будет полезно.

Эти инструменты содержат мощные отладчики (WinDbg, Cdb) и позволяют делать всевозможные полезные вещи, такие как создание symservers (symstore.exe), создание дампа процесса (cdb,windbg), отладка образов памяти (umdh.exe).

) и другие ошибки памяти (gflags — позволяет включить множество «скрытых» проверок системы как для конкретного exe-файла, так и для всей системы в целом).

Также включено множество других полезных инструментов, таких как средство просмотра отладочной информации.

Вы можете получить его здесь: микросайт Например, как получить образы памяти для любой программы: Нам понадобятся umdh.exe, tlist.exe и gflags.exe. Все они должны быть запущены с правами администратора.

Запустите gflags.exe и установите флажок «Создать базу данных стека пользовательского режима».

Перезагружаемся – теперь эта база данных будет создана для всех запущенных программ.

Можно настроить отдельно для каждого приложения.

Далее запускаем нужную программу, ждем пока все загрузится и получаем PID программы с помощью tlist.exe (или как вам еще нравится).

Например, ПИД == 111. Затем запустите umdh.exe -p:111 -f:c:\temp\log1.log. Эта строка сохранит информацию обо всех текущих выделениях памяти в процессе 111 в файл log1.log. Далее работаем в программе, ждем некоторое время и пишем еще раз: umdh.exe -p:111 -f:c:\temp\log2.log Получаем второй лог с распределением памяти.

Теперь вы можете сравнить их и получить лица: umdh.exe -d -v -l c:\temp\log1.log c:\temp\log2.log 1> c:\temp\log_result.log Теперь у нас в log_result.log будут все выделенные и не освобожденные куски памяти со стеками вызовов! Чтобы стеки калибровок были корректными, вам необходимо настроить переменную среды _NT_SYMBOL_PATH. В справке написано, как настроить его для Microsoft exe и dll. Лучше всего сохранять вашу pdb на символьном сервере, который можно будет пополнять после сборки с помощью symstore.exe — тогда у отладчика всегда будет правильная pdb. Если сервера нет, можно просто поставить pdb рядом с exe - он должен подхватиться.

Если не получится, то добавьте путь к pdb в _NT_SYMBOL_PATH. Если у вас есть файл дампа и вам необходимо его проверить, то проще всего опять же использовать WinDbg. Он использует ту же переменную _NT_SYMBOL_PATH и, в отличие от VisualStudio, не требует исходных кодов или соответствующих двоичных файлов для отладки.

Просто дамп и подходящий pdb! Запускаешь WinDbg.exe, Файл\открыть аварийный дамп.

, открываешь дамп, пишешь !analyze -v, потом !uniqstack и обычно в простых случаях этого достаточно.

Вы видите какие pdbs были найдены, а какие нет и получаете анализ дампа.

Вы можете открывать окна со стеком вызовов, процессами и потоками и выполнять отладку.

Если вам нужно посмотреть код - File\Source File Path. - укажите путь к исходникам и вы сможете посмотреть то место в коде, где что произошло (лучше сразу прописать эти пути в переменной окружения _NT_SOURCE_PATH так чтобы не вводить их каждый раз).

Короче, опять же все просто и удобно, если у вас есть правильный pdb :) Проблемы с зависанием чего-либо можно легко решить, создав дамп зависшего процесса.

Для этого можно использовать тот же WinDbg или специальные программы или стандартную функцию системы в Висте в диспетчере задач - создать дамп :) Более того, DebuggingTools можно установить после зависания — перезагрузка не требуется.

Установил и удалил дамп.

Чтобы снять дамп, пользователю не нужен никакой pdb. Затем вы анализируете и исправляете этот дамп (в Windbg есть специальные команды для поиска взаимоблокировок и т.п.

— команда !locks и другие).

Заключение: Чтобы не было проблем с отладкой, нужно позаботиться о системе хранения файлов pdb для КАЖДОГО билда или хотя бы для официальных билдов.

А также изучить инструменты отладки и написать простые рекомендации для тестировщиков и программистов - что делать в случае ошибки или зависания, как создать дамп, куда его положить и с какими комментариями.

А некоторые тестировщики могут даже запустить WinDBG и скопировать оттуда необходимые данные, например стек вызовов с ошибкой, в отчет об ошибке — это очень помогает при предварительном анализе.

Кроме того, пара полезных ссылок для новичков о WinDBG: WinDbg. От А до Я! Общие команды WinDbg (тематически сгруппированные) Теги: #программирование #отладка #Чулан

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.