Является ли состояние, отображаемое в дампе сбоя приложения, точным в Windows при получении из диспетчера задач?

0

В принципе, приложение застыло в изображении VMWare (Win764), поэтому я создал дамп сбоя приложения с помощью диспетчера задач. Это создало аварийную свалку просто отлично. Затем я открыл дамп аварийной ситуации, используя WinDbg, когда ссылался на символы, которые отлично работали, так как теперь я мог видеть все потоки, процессы и стек вызовов. Когда я нажимаю элемент в стеке вызовов, он открывает окно в WinDbg, показывающее фактическую строку кода в исходном файле, который был включен для этой части стека вызовов.

Теперь мой вопрос: насколько точна/достоверна информация, отображаемая в WinDbg при отладке таким образом? Похоже, что иногда состояние, в котором он показывает приложение, не имеет никакого смысла... например, это показывает невозможные сценарии или сценарий, который никогда не случался на 100%. Например, я видел, что это показывает, что операция была запущена и завершена, но когда я проверяю файлы журнала, которые были написаны правильно, показывая, что операция никогда не происходила. Он регистрирует, что этого не произошло, и он успешно продвигался вперед. Кроме того, конечный результат операции, если бы он завершился, абсолютно не произошел. Это довольно очевидно, чтобы увидеть, действительно ли операция началась и что произошло.

Возможно ли, что аварийные свалки просто ошибочны или показывают старую информацию, каким-либо образом?

Теги:
windows-7
windbg
crash-dumps

1 ответ

0

Любой дамп, который я видел до сих пор, был правильным в том смысле, что он точно показал процесс во время взятия дампа. Но есть кое-что, что нужно помнить:

  • убедитесь, что вы смотрите на исходный код коррекции, который действительно соответствует версии дампа. У меня была такая ситуация часто: я смотрю неправильную версию исходного кода, и мое впечатление в том, что такой ситуации никогда не произойдет.
  • если приложение что-то испортило (например, стек), вы увидите только поврежденный материал на дампе, что иногда может вводить в заблуждение. Вы должны сами выяснить, доверяете ли вы тому, что видите.
  • если приложение выглядит замороженным, оно все равно может меняться, поскольку оно находится в бесконечном цикле. Сделайте несколько дампов замороженного приложения, чтобы увидеть, какие изменения.
  • выход журнала не может быть актуальным (как уже указывал Ханс Пассант уже), для нескольких причин: либо буфер не был сброшен, либо приложение разбило файл журнала, перезаписав имя файла, уничтожив дескриптор файла и т.д.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню