Как я могу просмотреть стек вызовов запущенного процесса / потока?

14

Кто-то попросил меня получить стек вызовов или трассировку стека запущенного процесса, чтобы он мог проанализировать его для меня.

Как я могу получить эту информацию?

Der Hochstapler
источник

Ответы:

35
  1. Получите Process Explorer .

  2. Включите Показать детали для всех процессов в меню Файл :

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

  3. На главной панели выберите интересующий вас процесс:

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

  4. Откройте контекстное меню (щелкните правой кнопкой мыши) для выбранного процесса и выберите Свойства :

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

  5. На вкладке Threads вы сможете увидеть список запущенных потоков внутри этого процесса:

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

  6. Выберите интересующую вас ветку и нажмите кнопку Stack :

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

  7. Process Explorer теперь отображает текущий стек вызовов для выбранного потока:

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

Символы

Если для устранения неполадок требуется более подробная информация, часто очень полезно загрузить символы отладки в Process Explorer. Вот как:

  1. Если у вас еще не установлен отладчик Windows, вам сначала нужно будет установить средства отладки для Windows .

  2. В Process Explorer откройте « Настроить символы ...» в меню « Параметры» :

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

  3. Если у вас установлены средства отладки (или другой отладчик Windows), Process Explorer автоматически найдет dbghelp.dllфайл. В противном случае установите правильный путь здесь.

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

    Путь символов должен выглядеть примерно так:

    SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
    

    Единственная часть, которую вы хотите настроить, это C:\Symbols. Это место, где символы отладки будут кэшироваться.

Der Hochstapler
источник
Есть ли способ сбросить все потоки вызовов стека в файл?
bgura