23:59 

Кратчайшее руководство по отладке при помощи дампов памяти

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

Сегодня я научился использовать дампы памяти в целях отладки. In a nutshell:

0. Отладка с помощью дампа используется, когда возможностей отладочной печати и удалённой отладки недостаточно (у меня удалённая отладка вообще не работала).
1. Не используйте команду "создать дамп" в диспетчере задач (или как там он сейчас называется). Дамп будет только частичный.
2. Качайте программу ProcDump.exe от Sysinternals и печально известного Марка Руссиновича.
3. В командной строке пишите ProcDump.exe -pa image.exe, где image.exe -- имя программы, дамп которой создаёте (желательно запускать отладочную версию). Есть ещё много параметров -- можно делать дампы при зависании, при превышении использования памяти/процессора, при падении программы и пр. Данная выше команда сделает дамп при её (команды) исполнении.
4. Перекачайте дамп на комп, где стоит вижуал студия. Дамп может занимать больше 100 мегабайт.
5. Откройте его. Для полноценной работы надо подгрузить символы (symbol, PDB-file). Для этого есть пункт в меню либо гиперссылка (зависит от версии).
6. Жмёте "запуск" (гиперссылка или пункт меню с зелёной стрелкой).
7. ???
8. ВУАЛЯ! Вы видите текущую точку работы на время создания дампа. Можно посмотреть все переменные. В окошечке "потоки" можно посмотреть точки выполнения всех потоков. Также доступны все стеки вызовов и все переменные в функциях более высоких уровней. Исполнять программу дальше, к сожалению, нельзя.

@темы: Программирование, Лайфхак

URL
   

Untitled

главная