Программа ведет себя ненормально при развертывании - PullRequest
0 голосов
/ 10 ноября 2010

У меня большие проблемы. Пожалуйста помоги. Я создал игру для своего клиента. Он отлично работает, когда я запускаю его из Visual Studio 2008 (как в конфигурации выпуска, так и в конфигурации отладки).

Но когда я запускаю его отдельный exe (или создаю проект установки), он не работает идеально. Он работает, но работает не совсем нормально, и проблема постоянна (каждый раз, когда я компилирую и запускаю автономный exe-файл, он показывает ту же проблему).

У меня тоже была эта проблема в прошлом, но, к счастью, я решил ее. Способ решения этой проблемы очень необычен: - Все отлично работало, и затем я сделал некоторые изменения в коде. Приложение начало показывать то же необычное поведение, как описано выше. Затем я начал откатывать изменения в коде один за другим. Игра начала работать отлично, когда я удалил определенную переменную из класса, и она использует. Затем я проверил все правила C ++ и все, но не нашел проблем в моей реализации. Даже все работало нормально, когда я запускаю из Visual Studio , Но мне понадобилась эта переменная и ее использование в игре для некоторой функциональности игры. Так что тогда я объявил переменную в PUBLIC (ранее это была защищенная переменная), и все работало отлично.

Я очень удивлен, увидев это необычное поведение, когда я объявляю переменную как ЗАЩИЩЕННУЮ, возникает проблема, но если я копирую и вставляю в Public, проблема решается. (Переменная используется только в классе, где она объявлена так что не должно быть никаких проблем).

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

Пожалуйста, скажите мне, что может вызвать эту проблему. Спасибо Tarun

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

Если это происходит вне отладчика, но не внутри отладчика, вы можете воспроизвести его, используя переменную окружения _NO_DEBUG_HEAP, как описано здесь (среди других мест): http://blogs.msdn.com/b/larryosterman/archive/2008/09/03/anatomy-of-a-heisenbug.aspx

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

Вы можете установить переменные среды в Visual Studio, чтобы они влияли только на отлаженный процесс: Как мне установитьконкретные переменные среды при отладке в Visual Studio?

1 голос
/ 10 ноября 2010

Изменение видимости переменных-членов может потенциально изменить макет класса, поскольку C ++ определяет порядок только в разделах видимости, а не между ними. Возможно, ваше изменение нарушает некоторый код, который не перекомпилируется вашим проектом.

0 голосов
/ 17 ноября 2010

Я решил эту проблему.Было действительно очень очень трудно найти решение.Я пишу здесь, как отслеживать ошибки такого рода.Некоторые шаги, которые вы должны сначала попробовать: - 1) Не игнорируйте предупреждения компилятора.Удалите все типы предупреждений.2) Программа для записи состояний переменной в файл рядом с критической частью вашей программы, в которой вы сомневаетесь, что вызывает ошибку.Напишите состояния на каждом шаге.Изучив переменную, вы можете найти некоторые неинициализируемые переменные или неправильное приведение типа или комарисон.

Вывод: 1) Избегайте любого сопоставления (равного сравнению) со значениями с плавающей точкой.2) Если вы проводите сравнение на основе времени, убедитесь, что вы полностью заботитесь об этом.3) Не этот Microsoft Люди бог.

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