2013-04-29 5 views
-1

Происходит ряд ошибок, но я уверен, что все они связаны, так что сначала я получаю исключения для обнаружения нарушения доступа в местах расположения (обычно около 0x00000000) , но я только получайте эти исключения в релизе, а не отлаживайте, даже если я настраиваю отладку для этого. Также я обнаружил, где происходит ошибка, но когда я перехожу к тому, что он переходит к полной несвязанной функции, которая не вызывается в строке или в любой из функций этой строки кода. Но когда подобный код называется, он по-прежнему переходит к этой несвязанной функции, но не прерывается. Все это происходит только в версиях релиза. Я знаю, какая часть кода вызывает ошибку, как будто я прокомментирую ее все в порядке. Также в окне просмотра в выпуске все числа ошибочны в большинстве случаев, что никогда не было проблемой, но могло бы помочь также добавить к нему некоторый код для вывода значений переменных в файл, а переменные все в порядке, указатели разумны, но когда происходит исключение, он всегда говорит о своем 0x00000020, но когда я смотрю на журнал, они в порядке. Это в 32 бит, но на 64-битных Windows 7 в C++. Пожалуйста, любая помощь будет хорошей!Ошибка только для Visual Studio 2012 Ошибка

+0

Если вы обращаетесь к массиву с помощью somthing, например 'a [8]' (если sizeof (a [0]) == 4) и 'a' был' NULL', вы получите нарушение доступа в 0x00000020. Ищите переменные, которые не получают назначения. –

+0

Спасибо, но не что-то другое, поскольку оно кажется случайным и в терминах значений переменных, все в порядке, а затем оно просто генерирует исключение, основная проблема в том, что код так длинный 20000 строк, и ошибка кажется что-то в основных частях кода, но то, что мне нужно, - это способ приблизиться к ошибке. Код действует так, как будто я вызываю нестационарную функцию класса, указатель которого равен null. –

+0

По-прежнему звучит как состояние гонки для меня, две нити касаются одной переменной. либо он считывается до его установки, либо затем устанавливается, а затем сбрасывается до нуля до того, как он будет считан. –

ответ

0

Отладчик Visual Studio заставит программу использовать отладочную кучу, которая может скрыть неинициализированную память, если вы используете опцию «Начать с отладки», чтобы запустить вашу программу, отпустить или отладить. Вы можете попробовать запустить свою программу, встроенную в конфигурацию Debug, без приложенного отладчика, а затем использовать команду «Прикрепить к процессу ...» в меню отладки, чтобы подключиться к вашему исполняемому файлу.

Если это не помогает, я рекомендую использовать windbg для отладки вашей программы. Для начала работы с windbg, взгляните на ответы на этом question.

После того, как настроен windbg и настроены пути символа, вы можете использовать параметр «! Analysis -v», как только программа выйдет из строя, чтобы автоматически получить много информации об аварии.

+0

Я обнаружил, что если я запускаю выпуск без отладки, он работает нормально, никаких ошибок, я нормально запускаю выпуск с отладкой, поэтому я не заметил, но все-таки почему бы не работать с отладкой в ​​режиме выпуска. –

Смежные вопросы