сбои, которые не попадают в MS VS Debugger - как поймать? - PullRequest
0 голосов
/ 08 сентября 2010

Я получаю случайные сбои из моего приложения на c # (Windows 7 / VS2008), и оно не дает мне обычную трассировку стека, а скорее предлагает закрыть / отладить / найти информацию типа диалогового окна Windows 7. Я запускаю приложение либо из-под VS2008, либо отдельно - тоже самое. Нажатие «Отладка» предлагает выполнить отладку с новым экземпляром VS, который завершается ошибкой, поскольку «другой отладчик уже подключен к приложению». Но подключенный отладчик не дает мне никакой возможности увидеть, где он выходит из строя, просто дает некоторые подсказки в окне вывода (ниже). Как с этим бороться?

Похоже, я должен включить (?) Исключения первого шанса в отладчике VS, но неясно, как ... Я ценю любую помощь с этим!

Добавление - я нашел, как включить отладку исключений в VS2008 (Debug-> Exceptions-> проверил все 5 категорий исключений). И это все равно дает мне точно такой же результат - сбой без возможности увидеть, что происходит в отладчике.

'PS.exe' (управляемый): загружен 'C: \ Windows \ сборка \ GAC_MSIL \ System.Deployment \ 2.0.0.0__b03f5f7f11d50a3a \ System.Deployment.dll' Первое случайное исключение типа 'System.Deployment.Application.InvalidDeploymentException' произошло в System.Deployment.dll A исключение первого типа 'System.Threading.ThreadAbortException' произошло в mscorlib.dll поток 0x1964 вышел с кодом 0 (0x0). Нить 0x1b24 вышла с кодом 0 (0x0). Первое случайное исключение тип 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.Threading.ThreadAbortException' произошло в mscorlib.dll поток 0x19b8 вышел с кодом 0 (0x0). Нить 0x18f4 вышла с кодом 0 (0x0). Нить 0x420 вышла с кодом 0 (0x0). Первый шанс исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа 'System.ArgumentOutOfRangeException' произошло в mscorlib.dll первый случайное исключение типа«System.ArgumentOutOfRangeException» возникла в mscorlib.dll Первое исключение типа «System.ArgumentOutOfRangeException» возникло в mscorlib.dll Программа «[6084] PS.exe: управляемая» завершена с кодом -1073740940 (0xc0000374).

Ответы [ 5 ]

2 голосов
/ 08 сентября 2010

Это похоже на то, чтобы стать свидетелем одного из этих огромных нагромождений в гонке формулы 1.Последний осколок, который пришел в себя, сообщил:

// MessageText:
//
// A heap has been corrupted.
//
#define STATUS_HEAP_CORRUPTION           ((NTSTATUS)0xC0000374L)

Да, это очень серьезный выброс шин.Много вещей идет не так, как надо, когда куча искажается.Вы, вероятно, получили некоторый неуправляемый код, который ведет себя не так, как это характерно для неуправляемого кода, разрушая целостность кучи плохой записью указателя.Очень трудно диагностировать, изолировать этот код.

1 голос
/ 08 сентября 2010

В VS перейдите в раздел «Отладка / Исключения» и установите флажок «Брошено» для «Общих исключений во время выполнения».Это поймает «исключение первого шанса».

Похоже, что исключение развертывания связано с Click Once.Вы используете это?

0 голосов
/ 08 сентября 2010

IMO лучшее средство для отладки повреждений кучи - использование Windbg.Вот блог post от Tess об отладке управляемого повреждения кучи.

HTH

0 голосов
/ 08 сентября 2010

Нажмите Ctrl + Alt + E в Visual Studio или выберите «Отладка»> «Исключения» в меню, а затем нажмите «Исключения CLR», чтобы перехватить все исключения первого шанса.Это может привести к разрыву в случае разногласий.

В противном случае попробуйте написать операторы Debug.Write и Trace.Write в критических точках своего кода, чтобы увидеть, чего вы достигнете до того, как произойдет сбой.Отладку и запись можно найти в System.Diagnostics пространстве имен.

0 голосов
/ 08 сентября 2010

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

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