Использование windbg в первый раз для отладки процесса, который выключается без предупреждения - PullRequest
1 голос
/ 29 июля 2010

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

Как мне использовать windbg, чтобы понять эту проблему? Кроме того, что я могу указать для пути к файлам символов? Для загрузки символов с сервера символов MS. Я не уверен, нужно ли мне также устанавливать переменную env.

Спасибо

Ответы [ 3 ]

1 голос
/ 07 августа 2010

Вы можете присоединиться к созданному процессу, установив в windbg опцию, которая будет присоединяться к любому процессу, созданному текущим процессом. Используйте «.child_dbg 1» (не уверен в точном названии команды). После того, как вы запустили процесс пользовательского интерфейса в windbg, просто нажмите на кнопку, как обычно, и дайте процессу создать. Это сломается в windbg. Как только это произойдет, просто используйте команду «g», чтобы процесс продолжался. Всякий раз, когда дочерний процесс завершается, вы получаете уведомление в отладчике. Таким образом, вы можете выяснить причину выхода из процесса.

Если это не помогает (если процесс обычно завершается с помощью exitprocess или завершается с помощью TerminateProcess), вы можете установить точки останова в функциях выхода и проверить стек вызовов.

1 голос
/ 29 июля 2010

Вот как найти символы: http://support.microsoft.com/kb/311503.

Как правило, самый простой способ сделать это - установить переменную окружения:

_NT_SYMBOL_PATH=SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols

Убедитесь, что вы запускаете Windbg ПОСЛЕ того, как вы установили переменную среды, и имейте в виду, что в последних версиях VS также будет использоваться эта переменная среды, поэтому их отладка будет запускаться медленнее.

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

Тихий выход часто является признаком одного из них:

  • переполнение стека (бесконечная рекурсия)
  • исключение в обработчике исключений (иногда)
  • Использование последовательности установки главного окна в приложениях WPF.
0 голосов
/ 20 ноября 2010

Если вы можете себе позволить, откройте заявку в службу поддержки через http://support.microsoft.com. Ребята из службы поддержки могут предоставить вам подробные инструкции о том, как собрать необходимую информацию.

Использование WinDbg не так тривиально. Если вы не приличный программист, вы должны выбрать легкий путь.

...