Отладка бинарных файлов / дампов "release-mode" в windbg - PullRequest
1 голос
/ 21 июня 2011

Мне еще не удалось найти хороший ресурс для отладки двоичных файлов или дампов режима RELEASE в windbg.

Я понимаю, что отладка становится более ограниченной при включенной оптимизации компилятора.Но иногда у меня нет выбора - например, анализ аварийного дампа по невоспроизводимой проблеме.

Было бы очень хорошо, если бы была какая-то статья, описывающая, что возможно (илина что обратить внимание) с выпуском двоичных файлов.Кто-нибудь знает о таком ресурсе?

Я ищу что-то вроде this , но с гораздо большей детализацией.Я надеялся, что в Advanced Windows Debugging что-то будет, но не повезло.

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

Первое правило : сохраняйте все pdbs из каждой сборки, которую вы выпускаете: как из exe, так и из любых других созданных вами dll

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

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

Одна вещь, которую нужно проверить, состоит в том, что в ваших оптимизированных сборках выпуска параметр «Omit Frame Pointers» имеет значение «Нет». Одно это значительно упростит отладку, так как в 99% случаев вы получаете не очень значимый стек.

Имейте в виду, что большую часть времени указатель 'this' будет отображаться как NULL в сборке выпуска, но иногда вы можете перемещаться вверх и вниз по стеку, чтобы найти, где он передается в качестве параметра. В общем, не полагайтесь на отображение переменных в отладчике. Если значения выглядят разумными, то они, вероятно, правы. Если они выглядят совершенно неправильно, то это либо ваша ошибка, либо это просто поддельное отображение оптимизированной переменной.

О, и посмотрите на легендарного Джона Роббинса ( Bugslayer ), чтобы узнать о некоторых замечательных ресурсах по анализу аварийных дампов.

3 голосов
/ 21 июня 2011

Если у вас есть PDB, большинство вещей возможно (я годами отлаживал библиотеки Windows OS исключительно в режиме выпуска!).

Нужно понимать, что WinDbg теперь будет обманывать вас гораздо чаще - то есть будет отображать то, что видит , что не всегдафактическое значениеНапример, если вы попытаетесь запустить dv в кадре 15 на amd64, не сможет показать, что отображаемые значения будут точными, так как компилятор сохранил информацию в регистре.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...