|
|
1
10
像这样的随机崩溃通常是由堆栈损坏引起的,因为这些是分支指令,因此对堆栈的条件很敏感。这些有点难以追踪,但您应该在每次崩溃时运行valgrind并检查调用堆栈,以尝试识别可能是错误根源的常见函数。 |
|
|
2
5
一般来说,你应该高兴的应用程序崩溃的地方。崩溃意味着您可以使用调试器快速找到一个bug并将其清除。不使程序崩溃的bug要困难得多(一个真正复杂的bug的例子:给定100000个输入值,在数千个输出值中,经过几百次值操作后,app产生一个绝对不正确的结果,这根本不应该发生)
对不起,如果你不能处理语言问题,那完全是你的错。如果你不能使用这个工具,要么选择另一个,要么提高你的技能。顺便说一下,用java制作游戏是可能的。 |
|
|
3
5
这些主要是由于堆栈损坏造成的,但是堆损坏也会以这种方式影响程序。
大多数情况下,堆栈损坏都是由于“off-by-one错误”造成的。
基本上,溢出/损坏会覆盖一条重要的指令,然后在很长时间之后,当您尝试执行该指令时,它将崩溃。 |
|
|
4
4
我通常喜欢花一秒钟的时间退一步思考代码,试图捕捉任何逻辑错误。
除了这两件事,你可以尝试使用调试器,如visualstudio或Eclipse等。。。
|
|
|
5
3
当您访问不允许访问的内存位置,或尝试以不允许的方式访问内存位置(例如,尝试写入只读位置)时,通常会发生崩溃/Seg故障。
|
|
|
6
2
没有简单的C++语句。如果只是简单的条件,你评估。返回只和返回的表达式一样简单。 您应该使用调试器和/或发布一些崩溃代码。“我的应用程序崩溃”作为信息没什么用。 |
|
|
7
1
我以前也有过这样的问题。我试图从不同的线程刷新GUI。 |
|
8
1
试着找出一种可靠地重现它的方法,然后在损坏的指针上放置一个手表。运行代码 逐行 直到找到损坏指针的那一行。 |
|
|
9
1
那你就得倒过来看看是怎么回事。内存更改的硬件断点是 非常 在Linux/BSD/Mac上,使用GDB的脚本特性可以提供很多帮助。您可以编写脚本,这样在断点被命中20次之后,它就可以对数组元素17的地址进行硬件监视。
使用assert检查每个函数的参数。在退出函数之前,使用assert检查每个对象的状态。在游戏中,断言玩家在地图上,玩家的生命值在0到100之间,断言你能想到的一切。对于复杂的对象,将verify()或validate()函数写入对象本身,检查对象的所有内容,然后从assert()调用这些函数。
|
|
|
10
1
一些提示:
|
|
|
11
1
另一个技巧:关闭代码优化,看看崩溃点是否更有意义。优化允许将代码的一小部分浮动到令人惊讶的地方;映射回源代码行可能不够完美。 |
|
12
0
检查指针。很可能,您正在取消对空指针的引用。 |
|
|
13
0
我发现当有一个删除对象的引用时会出现“随机”崩溃。由于内存不一定被覆盖,在许多情况下,你没有注意到它和程序正常工作,然后崩溃后,内存被更新,不再有效。 出于调试目的,请尝试注释一些可疑的“删除”。然后,如果它不再崩溃,你就在这里。 |
|
|
14
0
|
|
|
15
-1
|