c++ - 调试堆栈损坏方法

标签 c++ windbg stack-corruption

我正面临一个堆栈损坏,它在 wWinMain 函数返回之前就断点了。任何人都可以建议我一种方法,或者一些关于如何调试堆栈损坏的提示吗? (最好在 winDbg 中)

我知道损坏发生在我用 masm 为我的程序编写的过程中,但堆栈在整个过程中似乎都很好。 rsp 寄存器在整个时间内拥有它所需要的一切..

最佳答案

按顺序执行:

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

关于c++ - 调试堆栈损坏方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30260951/

相关文章:

c++ - 无法使用 Assimp 访问 3d 模型 (.OBJ) 的正确数量的顶点

c++ - 非法使用类型作为表达式

.net - Windbg 需要不同版本的 mscordacwks.dll

c - While循环不断重复,程序停止时调试错误

C++ 堆栈和堆损坏

c++ - 交换 vector 的值和索引

C++动态分配静态维度数组的数组

debugging - 内核调试时——查找用户态地址的页面保护

c++ - 如果我有一些符号警告,我可以使用 windbg analyze 的结果吗?

linux - ARM Linux 上的 "Backtrace stopped: previous frame identical to this frame (corrupt stack?)"