Visual Studio verliert die ersten Stapelrahmen bei StackOverflowException

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

Frage

Ich führe einen Web-Crawler aus und analysiere den Seiteninhalt mit HtmlAgilityPack und erhalte zufällig eine StackOverflowException in dieser C # -Bibliothek, aber wenn ich versuche, die Call Stack-Liste zu meinem Code zu sehen, bekomme ich:

"Die maximale Anzahl der von Visual Studio unterstützten Stapelrahmen wurde überschritten."

Randnotizen: Ich verwende bereits den HAP-Fix von sjdirect .

Hier ist ein Schnappschuss (es wiederholt sich so).

Gibt es eine Möglichkeit, die Anzahl der Stapelrahmen zu vergrößern, die Visual Studio verfolgen kann, bis mindestens so viel, wie die Anwendung zuweisen kann, bevor sie den Stapel füllt? Oder kann das Umgekehrte getan werden, nämlich die Stapelgröße der debuggten Anwendung zu reduzieren?

Akzeptierte Antwort

Das Problem mit StackOverflowExceptions ist, dass sie so tief sind, dass der Stack effektiv zerstört wird. Diese Seite hat ein rekursives Beispiel, das diese Bedingung verursacht, die mit 80.000 Ebenen auf dem Stapel endet.

Wenn ich VS ansehe, lese ich immer noch eine 32-Bit-App, die 64-Bit zum Debuggen emuliert, weht ihr vielleicht weit über den verfügbaren Speicher für VS hinaus, um die Menge an Stack-Levels für euch zu verwalten.


Beliebte Antwort

Es gibt kein offensichtliches Feature, das die Stapelgröße der CLR-Anwendung einschränkt oder die Frame-Frame-Zählung von Visual Studio erhöht.

Als Lösung gebe ich einfach auf HtmlAgilityPack, um den Text zu extrahieren (Dinge wie diese sind nicht wirklich Lösungen) und schreibe mir einen altmodischen HTML-Text-Parser oder versuche eine der Antworten auf ähnliche Fragen auf StackOverflow (sehr ähnlich auf die Frage von Matt Crouch , obwohl keine der Antworten dazu geeignet ist, renderbaren Text aus Tausenden von Seiten zu extrahieren)

Edit: Obwohl Regex normalerweise nicht empfohlen wird, löste dies mein Problem (ohne sich mit der StackOverflowException auseinanderzusetzen): Konvertiere HTML in Plain Text

Danke für Ihre Bemühungen und ich hoffe, dass dies jemand anderem hilft.



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow