Сборка выпуска не работает при запуске без отладки в VS2010

Я столкнулся со следующей проблемой:

Я пишу программу на c ++, используя VS2010. Сборка отладки работает правильно при запуске с / без отладки в VS. Когда я запускаю встроенный исполняемый файл напрямую, он также работает.

Сборка выпуска работает при запуске с отладкой в ​​VS и alsp, когда я запускаю исполняемый файл сборки напрямую.

К сожалению, программа не работает, когда я запускаю сборку релиза в VS -без отладки-. Окно создается, а затем программа быстро падает (без сообщения об ошибке). Поскольку он вылетает при запуске без отладки, я не знаю, как определить причину проблемы.

Есть идеи, что может быть причиной этого? Спасибо :)


person Martin    schedule 29.04.2011    source источник
comment
Итак, в чем разница между запуском исполняемого файла сборки и выпуска напрямую через проводник Windows и его запуском без отладки в Visual Studio?   -  person Martin    schedule 30.04.2011


Ответы (1)


Похоже, что у вас какая-то ошибка / повреждение памяти, которая просто нормально работает в отладчике.

Вы можете попробовать использовать couts, чтобы определить, как далеко / где он умирает, или попробовать такой инструмент, как Purify (или valgrind бесплатно, если вы можете портировать на Linux).

person Mark B    schedule 29.04.2011
comment
Перенос на другую ОС - радикальный, но потенциально очень эффективный способ отладки :) - person Fred Foo; 30.04.2011
comment
Спасибо, я пробую использовать couts :), но в чем разница между запуском .exe напрямую через проводник Windows и запуском без отладки в Visual Studio? Сборка релиза работает нормально при запуске напрямую через проводник Windows. - person Martin; 30.04.2011
comment
@malymato разница будет в инициализации памяти. Если ваша программа использует неинициализированную переменную, содержимое памяти по умолчанию может вызвать другое поведение. - person Mark Ransom; 30.04.2011
comment
Решено, действительно оказалось, что у меня была неинициализированная переменная. На самом деле это была ОДНА переменная типа bool. Программа зависит от того, установлена ​​ли эта переменная в значение true. Я забыл его инициализировать. Когда я запускал программу через VS, VS переменная была инициализирована значением false. Так что не вышло. И когда я запустил .exe напрямую, переменная была неинициализирована, поэтому она содержала только случайное значение, которое, конечно, было оценено как истинное, поэтому оно действительно работало. - person Martin; 30.04.2011