WinDbg - охота за NullPointerException ... - куда идти дальше? - PullRequest
2 голосов
/ 05 октября 2009

У нас есть некоторые проблемы на сервере фермы, который выходит из строя несколько раз в день. Никто из нас не имеет опыта работы с WinDbg, но моему коллеге удалось создать дампы с помощью adsutil.vbs, и теперь я анализирую дамп.

Загрузка символов и т. Д. Мне удалось это сделать - я немного прочитал и попробовал обе команды: проанализировать -v и несколько других команд. Среди них я использовал .exr -1, который дает мне следующее:

0:013> .exr -1
ExceptionAddress: 089644b9
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000000
   Parameter[1]: 00000000
Attempt to read from address 00000000

Где-то в дампе! Analysis я прочитал некоторые подробности об исключении Nullpointer-Exception, так что это мое руководство. Теперь я немного застрял - имея ссылку на место в памяти, не зная, где искать дальше ... Что бы вы посоветовали мне сделать сейчас?

Ответы [ 2 ]

3 голосов
/ 05 октября 2009

Я бы настоятельно рекомендовал начать с руководств по WinDbg в этом блоге MSDN . В боковой панели под «школой отладки» их около пяти. Ссылки охватывают множество основных аспектов отладки приложений .net.

Или вы можете перейти к обучению Исключения охоты с Windbg .

1 голос
/ 05 октября 2009

Поскольку вы, похоже, можете создать дамп по желанию (учитывая, что сервер довольно часто падает), я бы сделал следующее:

  1. Создайте полный аварийный дамп, если у вас его еще нет. Для этого вы можете использовать AdPlus (находится в библиотеке WinDbg), просто прочитайте документацию, чтобы узнать как.
  2. Отладка дампа в вашей собственной среде разработки, либо в Visual Studio (если у вас последняя версия), либо в самой WinDbg, имея весь доступный исходный код.

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

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

...