首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何纠正堆栈UNDERflow错误

如何纠正堆栈UNDERflow错误
EN

Stack Overflow用户
提问于 2016-03-10 18:36:21
回答 1查看 3.1K关注 0票数 0

在使用优化编译应用程序时,当我试图在应用程序中执行特定过程时,我会得到一个InvalidProgramException (Visual 2015)。我用PEVerify来查看它对这个问题的看法,它告诉我"Methodoffset 0x00000351堆栈下溢“。

显然,我可以通过关闭优化来解决问题,但这是一个不太理想的解决方案,因为等待MS修复下一个版本中导致它的任何错误。

我能做些什么来修复堆栈底流错误?如果我不得不猜的话,我会说这可能与这个课程大约有18k行有关,但我对此无能为力.

编辑:我并不期待类似于“删除6276和6277行”的回答,我想要的是解决.net中这类问题的一般策略。类似于这个ActionScript问题的答案:如何调试运行时堆栈下溢错误?,除了特定于.net。我发布这篇文章是为了让下一个有这类问题的人有一个起点来解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-11 06:39:23

好的,首先关闭无效的程序异常表示编译器有问题,而不是您的应用程序。。这意味着您可以在不运行应用程序的情况下进行测试,以查看问题是否仍然存在(或已转变为不同的问题)。一旦您看到这个错误,您就脱离了正常的调试场景--您没有做错什么事情,因此无法通过检查变量和查看您正在做的错误事情来找到或修复问题。

第一个怀疑可能是优化--构建时不进行优化,并查看您的exe是否还处于混乱状态。如果是这样的话,您可以考虑关闭一个充分的解决办法优化。您甚至可以使用System.Runtime.CompilerServices.Methodimpl(methodimploptions.nooptimization)为特定的方法关闭它。

如果没有,或者这不会改变任何事情,您想要找出是什么触发了bug,而Peverify是一个很好的起点。对编译后的exe运行它,它将列出所有存在错误代码的地方,即使它是一个未调用的方法。

因为这是一个编译器错误,所以您无法通过一步一步的方法来查看哪一行是正确的。它有它的优点--你不需要有一个功能(或者正如我前面所说的,可达的)方法。只要代码编译,它就会出现问题或不存在问题,因此您可以通过注释或删除方法中引起问题的行来查找违规行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35924569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档