Вопрос

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

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

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

«Ps.exe» (Управляемое): загружено «C: Windows assuse gac_msil system.deployment 2.0.0.0__b03f5f7f11d50a3a system.deployment.dll 'первый шанс Исключение типа« System ». произошло в System.deployment.dll Первое шанс, исключение типа «System.threading.thredabortexception» произошло в MScorlib.dll нить 0x1964 вышел с кодом 0 (0x0). Тема 0x1b24 вышла с кодом 0 (0x0). Первое шанс исключения типа «System.argumentOutofrangeexception» произошло в MSCorlib.dll первый шанс исключение типа «System.argumentoutofrangeexeex» произошло в MSCorlib.dll первый шанс, исключение типа «System.argumentOutofrangeexception» произошло в MSCorlib.dll Шанс Исключение типа «System.argumentOutofrangeexception» произошло в MScorlib.dll первый шанс, исключение типа «System.argumentoutofRangeexception» произошло в MSCorlib.dll первый шанс, исключение типа «System.ArgumentOutofrangeexception» произошло в MSCORLIB. типа "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.argumentoutofrangeexeex» произошло в MSCorlib.dll первый шанс, исключение типа «System.argumentOutofrangeexception» произошло в MSCorlib.dll Шанс Исключение типа «System.argumentOutofrangeexception» произошло в MScorlib.dll первый шанс, исключение типа «System.argumentoutofRangeexception» произошло в MSCorlib.dll первый шанс, исключение типа «System.ArgumentOutofrangeexception» произошло в MSCORLIB. типа "System.argumentoutofrangeexception" произошло в mscorlib.dll первый шанс, исключение типа «System.argumentoutOfRangeexception» произошло в MSCorlib.dll первый шанс, исключение типа «System.argumentOutofRangeexception» произошло в MSCorlib.dll первый шанс исключение типа «System.argumentoutOfrangeexception» произошла в MScorlib.dll первый шанс, исключение типа «System» .Argumento utofrangeexception "произошло в mscorlib.dll первый шанс, исключение типа« System.argumentoutOfrangeexception »произошло в MScorlib.dll первый шанс, исключение типа« System.argumentoutOfrangeexception »произошло в MSCorlib.dll первый шанс, исключение типа« System ». произошло в mscorlib.dll программа [6084] ps.exe: Управляется 'вышла с кодом -1073740940 (0xc0000374).

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

нажимать Ctrl + Alt + E В Visual Studio или выберите Debug> Исключения из меню, а затем нажмите исключения CLR, чтобы поймать все первые случайные исключения. Тогда следует надеяться, что сломаются в точке конкуренции.

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

ИМО лучше всего отлаживать куча коррупции использует windbg. Вот блог сообщение От Тесса на отладке управляемой кучи коррупции.

Емкость

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top