我在Qt中编写一个桌面游戏,在玩家进行移动之后,计算机AI必须暂停并思考一段时间。然而,在思考时,似乎只有在每行代码执行之后屏幕才会更新。因此,用户会点击一个方块,几秒钟内没有发生任何事情,然后突然看到他的移动结果和计算机的移动。强制Qt GUI更新
为了解决这个问题,我尝试创建一个AI运行其代码的新线程,然后将其放在板上。然而,有时(这是非常不一致的)游戏在计算机移动后崩溃。
所以你们可以两种:
- 告诉我如何迫使主窗口,以更新其内容
- 帮我尝试调试崩溃的问题(我完全新的线程)
编辑 - 我尝试设置断点为suszterpatt建议,程序似乎在调试器中一直崩溃(它不是在我设置断点之前)。
不管怎么说,我通过程序步骤,似乎要经过run
功能罚款,直到它到达结尾括号,然后如果我通过它一步跳跃到线317上qthread_win.cpp
,这只是说
finish(arg); //line 317
return 0;
如果我经过那一行,调试器冻结并且Qt在20秒后发出警告。如果我继续,我会收到“此应用程序请求运行时以非常规方式终止它”的消息,当我不调试时程序偶尔崩溃时,我会收到这条消息。
现在该怎么办?
你应该坚持创建一个单独的AI线程。只有2个线程,调试不应该太“难”,特别是如果你已经知道崩溃发生的位置:你可能只是放下一些断点,看看哪一个最后被执行,然后从那里缩小它。 – suszterpatt 2010-12-14 20:51:36
@susz好的确定,但我不太确定哪里出现崩溃。去谷歌在qt设置断点... – wrongusername 2010-12-14 20:52:54