Visual Studio在StackOverflowException上丢失了第一个堆栈帧

c# html-agility-pack stackframe stack-overflow visual-studio

我正在运行一个Web爬虫并使用HtmlAgilityPack解析页面内容并在该C#库中随机获取StackOverflowException,但是当我尝试查看调用堆栈列表到我的代码时,我得到:

“已超出Visual Studio支持的最大堆栈帧数。”

附注:我已经在使用sjdirect的 HAP修复程序了。

这是一个快照(它一直重复这样)。

有没有办法扩大Visual Studio可以跟踪的堆栈帧数,至少应用程序在填充堆栈之前可以分配的数量?或者可以反过来,即减少调试应用程序的堆栈大小?

一般承认的答案

StackOverflowExceptions的问题在于它们非常深,堆栈有效地被破坏。 此页面有一个递归示例,导致此条件最终在堆栈上有80,000个级别。

考虑到VS最后我读到的仍然是一个模拟64位进行调试的32位应用程序,你可能会远远超过VS的可用内存,以便为你管理堆栈级别。


热门答案

没有明显的功能来限制CLR应用程序的堆栈大小或增加Visual Studio的跟踪堆栈帧数。

作为解决方案我就放弃HtmlAgilityPack提取文本(东西像这样一个老式的HTML是不是真的解决方案)和写自己的文字分析器或尝试答案贴在计算器上其他类似的问题之一(十分相似Matt Crouch的问题 ,虽然没有一个答案适合从数千页中提取可渲染文本)

编辑:虽然通常不建议使用正则表达式,但这实际上解决了我的问题(无需处理StackOverflowException): 将HTML转换为纯文本

感谢您的努力,我希望这有助于其他人。




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因