gcc - 如何知道.exe程序的堆栈大小限制?

标签 gcc stack mingw exe stack-size

我的程序(使用 mingw g++ 构建)似乎由于堆栈内存不足而崩溃。我使用编译选项 -Wl,--stack,64000000 来增加堆栈限制,但问题仍然存在。我想知道是否有实用程序或方法来检查我的 .exe 程序的当前堆栈限制,以便我可以验证该限制确实已更改为该值。

最佳答案

从这里answer , 要检查堆栈大小,您需要安装 Visual Studio 并使用 visual studio 工具 dumpbin。通常有一个脚本可以运行,以在路径中打开命令提示符窗口,其中包含路径中的所有 visual studio 工具,这是 vcvarsall.bat 或开始菜单中的“x64 Native Tools Command Prompt for VS 2019”(或类似的东西) .

运行

dumpbin /headers executable.exe

这将返回一个长输出。在该输出中,查找 OPTIONAL HEADER VALUES 并且在该部分中,将有一个 size of stack reserve 。默认堆栈大小写为 100000(字节),即 1 兆字节。

您可以使用同样由 Visual Studio 提供的 editbin 更改可执行文件的堆栈大小:

editbin /stack:N executable.exe

这里 N 是堆栈大小的字节数。

关于gcc - 如何知道.exe程序的堆栈大小限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55901513/

相关文章:

c - 用指针初始化一个常量数组

java - 将节点列表的元素扔到堆栈上

c++ - 如何在 C++ 中按字母顺序对堆栈进行排序?

c - MinGW,始终与 pthreads 链接

c++ - 明威。如何使用静态和动态链接

debugging - gcc LTO 似乎剥离调试符号

c++ - 如何忽略 [默认启用] 的特定 gcc 警告?

c - 为什么此代码会阻止 gcc 和 llvm 进行尾调用优化?

embedded - 什么是任务堆栈,它的用途是什么? - uC/OS-II

c++ - MinGW 编译的程序在 64 位 Windows 上崩溃