VisualStudio C ++, как сделать debuginfo надежным в режиме релиза - PullRequest
0 голосов
/ 15 декабря 2009

У меня маленькая проблема. мое приложение работает без проблем в режиме отладки, но падает в режиме выпуска. Я не могу отследить проблему, потому что в режиме релиза все Debuginfo кажется бессмысленным. Однако - иногда в других проектах выходные данные отладки также действительны в режиме выпуска. Какие настройки проекта мне нужно изменить, чтобы выходные данные отладки были действительными в выпуске?

спасибо!

Ответы [ 2 ]

1 голос
/ 15 декабря 2009

Даже в режиме выпуска «Генерировать отладочную информацию» следует установить «Да» по умолчанию. Проблема в том, что когда вы работаете в режиме Release, компилятор оптимизирует код, из-за чего отладчику сложно отображать правильные значения переменных (например, он может сохранить некоторые переменные в регистрах и т. Д.).

С этим ничего не поделаешь, вы всегда можете отключить оптимизацию либо глобально, либо вокруг определенной функции, используя #pragma optimize ("", off) / #pragma optimize ("", on) вокруг нее, но это, по сути, означает, что вы снова работаете в режиме отладки и вылетаете вероятно уйдет ...

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

1 голос
/ 15 декабря 2009

Скорее всего, вы используете неинициализированные переменные.

В настройках вашего проекта установите

Configuration Properties > C/C++ > General > Debug Information Format

до Program Database

Затем установите

Configuration Properties > Linker > Debugging > Generate Debug Info

до Yes

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

...