Как получить стек вызовов умирающего процесса, то есть узнать, как происходит выход процесса - PullRequest
2 голосов
/ 04 декабря 2010

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

Я хочу выяснить, что такое стек вызовов при выходе из процесса, например, кто вызывает exit (0) для моего процесса.

Это нативное приложение C ++, которое состоит из миллионов строк, я не мог понять, где что-то пошло не так.

Есть ли такая возможность, например, если я бегу под Windbg?

Ответы [ 3 ]

2 голосов
/ 04 декабря 2010

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

2 голосов
/ 04 декабря 2010

Вы можете настроить Process Dumper для выгрузки полного образа процесса при выходе для последующей отладки. Из обзора:

Дамп автоматически, когда процесс отслеживается выход

0 голосов
/ 04 декабря 2010

Microsoft Debugging Toolkit от Microsoft поставляется с такой утилитой, которая называется ADPlus.

ADPlus - это инструмент командной строки (раньше он был, по-видимому, прославленным VB-скриптом), который делает кучу вещей.Но мы с тобой заботимся о том, чтобы получить колл-стэк процесса, который умер.AdPlus можно настроить для захвата стека вызовов внешнего процесса, когда он встречает необработанное исключение.

Синтаксис выглядит следующим образом:

ADPlus -p <process id> -crash -o <output path>

, где

-p - аргумент, в котором вы передаете идентификатор процесса.Вы можете получить это из Process Explorer в TList (я думаю).Существуют и другие аргументы, которые позволяют указать имя процесса, но вам придется искать его самостоятельно.

-crash означает, что он должен генерировать мини-дамп в случае сбоя или столкновения.необработанное исключение.

-o - это путь к каталогу, в который вы хотите сохранить мини-дамп.Затем ADPlus создаст там подкаталог, содержащий имя процесса и метку времени.

Затем вы можете запустить ваше приложение, и, когда оно выйдет из строя, ADPlus создаст мини-дамп, и ваш процесс завершится.

Набор инструментов отладки Microsoft теперь является частью установки Windows SDK,Вы идете сюда, чтобы найти его:

http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Нажмите на ссылку для загрузки, чтобы загрузить небольшое приложение, которое установит все это из Интернета.Установщик предоставит вам множество вариантов установки различных компонентов.Вы можете игнорировать большинство из них и установить только набор средств отладки.

...