Я использую C # с XNA в Visual Studio 2010 Ultimate.
У меня есть программа, которая выполняет некоторые вычисления, не связанные с синхронизацией, потоками или чем-то еще, что может повлиять на результат, если я остановлю выполнение для отладки, но затем ничего не сделаю, прежде чем продолжить выполнение остальной программы.
В конце программа выводит некоторые данные на экран.
В этой программе многократное нажатие F10
до тех пор, пока не отобразится вывод, дает другой результат, чем простое нажатие F5
для запуска во время отладки или для работы без отладки, что приводит к неверному результату.
Показывает прогон с отдельными F10
шагами.
Программа многократно запускает простую игру для двух игроков, игра включает перемещение счетчика на доске, оба игрока автоматизированы и передвигаются случайным образом. 100 игр происходят на каждой линии, некоторые игры не заканчиваются до истечения определенного количества ходов и не учитываются. Как видно из этих 8 наборов случайных игр, он достаточно хорошо сбалансирован, по крайней мере, для игроков, которые делают случайные ходы в отношении того, кто победит, а кто проиграет.
На следующем рисунке показан прогон с F5
.
Что-то здесь не так, игры не влияют друг на друга, а сеты - это просто место, где можно остановиться и начать считать, они ничего не влияют. Однако в отличие от первого изображения мы выиграли все 100 игр подряд, дважды, но затем проиграли 100 совершенно новых, не связанных друг с другом игр подряд 2 сета.
Очевидный ответ, данный 2-м изображением, заключается в том, что с моей логикой программы что-то не так, но это не так. И расстраивает то, что когда я иду к отладке, проблема запуска медленного отладчика, чтобы я мог видеть, что происходит, исправляет это.
Что может быть не так?