Могу ли я использовать результат анализа windbg, если у меня есть какие-нибудь символьные предупреждения?

Я новичок в windbg и анализ памяти в windows.
Я пытаюсь проанализировать дамп памяти (аварийный дамп), это система x64.

После загрузки всех символов (мой и майкрософт)
Я печатаю !analyze -v

Это часть вывода:

......
FAULTING_SOURCE_CODE:  <some code here>

SYMBOL_STACK_INDEX:  6

SYMBOL_NAME:  rtplogic!CSRTPStack::Finalize+19d

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: RTPLogic

IMAGE_NAME:  RTPLogic.dll

DEBUG_FLR_IMAGE_TIMESTAMP:  58542837

STACK_COMMAND:  ~544s; .ecxr ; kb

FAILURE_BUCKET_ID:  WRONG_SYMBOLS_c0000374_RTPLogic.dll!CSRTPStack::Finalize

BUCKET_ID:  X64_APPLICATION_FAULT_WRONG_SYMBOLS_rtplogic!CSRTPStack::Finalize+19d
......

это WRONG_SYMBOLS беспокоит меня

Могу ли я быть уверен, код в FAULTING_SOURCE_CODE это код, связанный с падением?

0

Решение

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

Когда вы печатаете ~544s; .ecxr; k вы увидите стек вызовов. Этот стек вызовов будет включать предупреждение в тот момент, когда он станет неопределенным. Вы можете доверять всему раньше, что уже может помочь, но вы не можете доверять кадрам стека под предупреждением.

Вы можете сравнить k вывод на dps @ebp (возможно добавить L fff если этого недостаточно), чтобы увидеть, что еще мог догадаться отладчик.

Обратите внимание, что в выводе dps Вы также можете увидеть совершенно не связанные вещи, если случайно один из ваших расчетов в стеке привел к значению, которое можно интерпретировать как символ.

2

Другие решения

c0000374 это STATUS_HEAP_CORRUPTION, Просмотр нормального дампа показывает код только после того, как произошло повреждение.

активировать Pageheap с gflags.exe для вашего exe

введите описание изображения здесь

PageHeap позволяет функциям Windows, которые резервируют память на границе каждого выделения, обнаруживать попытки доступа к памяти за пределами выделения. Это приведет к аварийному завершению работы приложения, и здесь вы увидите реальную причину сбоя. Откройте DMP и запустите !analyze -v чтобы увидеть, что искажается.

2

По вопросам рекламы [email protected]