Mar*_*aux 6 c++ crash debugging
我正在开发一款游戏,当我在游戏中执行特定操作时,它会崩溃.所以我进行了调试,我看到我的应用程序在简单的C++语句中崩溃,例如if,return...每次重新运行时,它会在3行中的一行中随机崩溃,但它永远不会成功.
第1行:
if (dynamic) { ... } // dynamic is a bool member of my class
Run Code Online (Sandbox Code Playgroud)
第2行:
return m_Fixture; // a line of the Box2D physical engine. m_Fixture is a pointer.
Run Code Online (Sandbox Code Playgroud)
第3行:
return m_Density; // The body of a simple getter for an integer.
Run Code Online (Sandbox Code Playgroud)
我从应用程序和操作系统都没有错误...
是否有提示,提示或技巧来调试更有效率并了解正在发生的事情?
这就是我喜欢Java的原因......
谢谢
Ada*_*mke 10
像这样的随机崩溃通常是由堆栈损坏引起的,因为这些是分支指令,因此对堆栈的状况很敏感.这些有点难以追踪,但您应该运行valgrind并检查每次崩溃时的调用堆栈,以尝试识别可能是错误根本原因的常见函数.
这些主要是由于堆栈损坏,但堆损坏也会以这种方式影响程序.
由于"一个错误的关闭",大多数时候都会发生堆栈损坏.
发生堆损坏是因为没有小心处理new/delete,比如double delete.
基本上会发生的事情是溢出/损坏会覆盖一条重要的指令,然后在你试图执行指令时,它会崩溃.
是否有提示、技巧或技巧可以更有效地调试并了解正在发生的事情?
一般来说,您应该很高兴应用程序在某处崩溃。崩溃意味着您可以使用调试器快速找到并消除错误。不会使程序崩溃的错误要困难得多(真正复杂的错误示例:给定 100000 个输入值,在对值进行数百次操作后,在数千个输出中,应用程序产生 1 个绝对不正确的结果,这不应该发生了)
这就是我喜欢Java的原因...
对不起,如果你不能处理语言,那完全是你的错。如果您无法使用该工具,请选择另一个工具或提高您的技能。顺便说一句,可以用Java制作游戏。
| 归档时间: |
|
| 查看次数: |
2941 次 |
| 最近记录: |