【问题标题】:Cannot increase stack size Visual Studio 2013 C#无法增加堆栈大小 Visual Studio 2013 C#
【发布时间】:2016-02-13 15:42:14
【问题描述】:

我正在使用 Visual Studio 2013 社区版编写 C# 项目。

我的程序使用 HtmlAgilityPack 解析 HTML 并引发堆栈溢出异常。我一直在尝试更改堆栈大小,但我看到的解决方案属性窗口只有屏幕截图中显示的选项:

Visual Studio 2013 configuration properties missing

我读过一些其他文章,其中说 C# 项目的解决方案属性面板的可用选项与 C++ 不同。在哪里可以配置我的 C# 程序的堆栈大小?

【问题讨论】:

  • 它不会作为 C# 编译器中的选项公开,您必须使用 postbuild event。这解决您的问题的可能性很低,SOE 几乎总是由您的程序中的错误引起的。
  • 您确定您的程序中没有无限循环吗? (无论是标准的一段时间未结束,还是递归不会停止。这些是堆栈溢出的默认原因,而不是其他任何原因)

标签: c# visual-studio-2013 stack-overflow stack-size


【解决方案1】:

这背后的原因似乎是堆栈溢出。该问题可以通过增加堆栈大小来解决。 在 Visual Studio 中,您可以使用 /STACK:reserve[,commit] 来执行此操作。 Read the MSDN article.

For more detailed explanation:

在 Windows 平台下,堆栈大小信息包含在可执行文件中。它可以在 Visual Studio C++ 编译期间设置。 或者,微软提供了一个可以直接更改可执行文件的程序 editbin.exe。以下是更多详细信息:

Windows(编译期间):

Select Project->Setting.
Select Link page.
Select Category" to "Output.
Type your preferred stack size in Reserve: field under Stack 
allocations. eg, 32768 in decimal or 0x20000 in hexadecimal.

Windows(修改可执行文件):

Microsoft Visual Studio 中包含两个程序,dumpbin.exe 和 editbin.exe。运行 dumpbin /headers executable_file,你可以在可选的 header 值中看到堆栈保留信息的大小。运行 editbin /STACK:size 以更改默认堆栈大小。

【讨论】:

    猜你喜欢
    • 2020-08-28
    • 2017-03-02
    • 2015-11-22
    • 2010-11-24
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2015-07-14
    相关资源
    最近更新 更多