Перехват исключений в порожденном процессе - PullRequest
2 голосов
/ 24 сентября 2008

Я использую VS2008 для отладки приложения, которое запускает новый процесс. Я полагаю, что порожденный процесс испытывает (и обрабатывает) какое-то исключение CLR во время своего запуска, но он не перехватывается включением Уведомления об Исключении CLR в Отладке -> Исключения. Любые предложения о том, как я могу увидеть, где генерируется исключение? Обычно я просто присоединяюсь к вновь порожденному процессу, но, поскольку исключение происходит при запуске, времени на это недостаточно.

Ответы [ 5 ]

5 голосов
/ 24 сентября 2008

Вы можете добавить вызов Debugger.Launch () в код запуска вашего процесса. Это запустит отладчик (обычно предоставляющий вам выбор использования запущенной копии VS2008 или новой копии), прикрепленной к процессу. Этот же прием удобен для отладки проблем с запуском Сервиса.

1 голос
/ 25 сентября 2008

Еще один прием, который стоит рассмотреть, - это использовать «Опции выполнения файлов изображений», посмотрите на этот пост на blogs.msdn.com: http://blogs.msdn.com/greggm/archive/2005/02/21/377663.aspx, так как для этого не требуется вносить какие-либо изменения исполняемый или родительский исполняемый файл.

0 голосов
/ 24 сентября 2008

Если у вас есть контроль над этим кодом процесса, используйте Debugger.Launch ().

Если нет, попробуйте:

Просто запустите этот процесс из командной строки и посмотрите результат. Если есть неупорядоченное исключение, оно будет показано.

Если ничего не отображается, используйте отладчик командной строки и команду ca [tch] .

0 голосов
/ 24 сентября 2008

Ну, вы можете записать ошибку. Но это не позволяет вам смотреть на это. Для этого вы можете рассмотреть вопрос о серьезной задержке (или цикле infinte) в обработчике исключений. Это даст вам все время, необходимое для подключения к процессу и его отладки. Просто убедитесь, что вы удалите его, прежде чем идти в производство !!

0 голосов
/ 24 сентября 2008

Если во время запуска процесса происходит сбой, CreateProcess должен вернуть код ошибки. Проверьте код ошибки.

Если процесс завершается неудачно сразу после запуска, проверьте код возврата процесса, его документацию, журналы и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...