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をテキストパーサに書き込んだり、StackOverflowに投稿された同様の質問Matt Crouchの質問ですが、何千ものページからレンダリング可能なテキストを抽出するための答えはありません)

編集:正規表現は通常は推奨されていませんが、これは実際には(StackOverflowExceptionを処理することなく)私の問題を解決: HTMLをプレーンテキストに変換

あなたの努力に感謝し、私はこれが他の誰かに役立つことを願っています。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow