Идентификатор потока Windbg после переполнения стека и остановки процесса - PullRequest
2 голосов
/ 24 июня 2009

Использование ADPlus (в режиме аварийного дампа) для создания файлов .dmp. Последняя последовательность необработанных исключений (которые создают файлы полного дампа памяти): ...

1-й шанс DLL выгрузить: содержит идентификаторы потоков, но не содержит StackOverflowException (я бы не ожидал, так как на данный момент исключение еще не было сгенерировано).

1-й шанс Stackoverflow: содержит идентификаторы потоков, но не содержит StackOverflowException.

1-й шанс Завершение процесса (завершение работы): содержит исключение StackOverflowException, но не содержит идентификаторы потока.

???

Есть ли какой-нибудь способ, либо путем настройки ADPlus, либо путем запуска команд в Windbg, чтобы захватить исключение и получить доступ к идентификаторам потока?

В ответ Магнусу, есть ли полезная информация, если идентификатор потока недоступен? Запуск! Threads возвращает некоторую информацию, но без идентификатора потока и исключения, кажется, больше некуда идти. В этом случае запуск! Clrstack более полезен, чем запуск потоков!

Ответы [ 3 ]

0 голосов
/ 25 июня 2009

Вы пробовали команду ! Thread в WinDbg во время отладочной отладки вашего файла дампа?

0 голосов
/ 13 июля 2009

Откройте второй дамп и введите команду .ecxr [enter]
Теперь dds esp [enter]
Чтобы продолжить просмотр стека вызовов, просто напишите dds [enter]
[Ввод] .... [ввод] ....

Вы, вероятно, обнаружите, что этот поток был в процессе вызова выгруженной DLL.

0 голосов
/ 24 июня 2009

В следующем посте есть немного больше информации о захвате StackOverflowException, однако он никогда не был полностью решен

Помогите отловить StackOverflowException с WinDbg и ADPlus

...