调试堆栈损坏方法

时间:2015-05-15 13:38:45

标签: c++ windbg stack-corruption

我面临堆栈损坏,在wWinMain函数返回之前就断点了..有人可以建议我一个方法,或者如何调试堆栈损坏的一些提示? (最好是在winDbg中)

我知道在我为程序编写masm的过程中发生了损坏,但是在整个过程中堆栈似乎没问题。 rsp注册在整个时间内都有它所需要的一切......

2 个答案:

答案 0 :(得分:2)

按顺序执行以下操作:

  • 使用高级别警告进行编译,并修复大多数警告
  • 在项目上运行代码分析,并修复警告 - 特别是关于缓冲区/数组/堆栈等的说法。
  • 如果仍未修复损坏,请缩小功能大小(注释掉功能的上部或下部)。不仅仅是return - 可能仍然会分配破坏性的堆栈缓冲区 - 注释掉会从程序代码中省略坏堆栈。
  • 重构wWinMain - 划分为子任务(函数)。其中一个函数因堆栈而失败,您将找到真正的问题。

答案 1 :(得分:0)

好的,我已经成功追查了这个错误!我通过将值移动到qword ptr [rsp + 20h]错误地覆盖了变量内容,20h(偏移量)太远而且它覆盖了我的HINSTANCE变量。 :)'instance'变量周围发生堆栈损坏。在WinDbg良好实践的帮助下设法追踪。

感谢所有响应者。

相关问题