Visual Studio perd les premières images de pile lors d'une exception StackOverflowException

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

Question

J'exécute un robot d'exploration Web et analyse le contenu de la page avec HtmlAgilityPack et j'obtiens au hasard une exception StackOverflowException dans cette bibliothèque C #, mais lorsque j'essaie de voir la liste Call Stack jusqu'à mon code, je reçois:

"Le nombre maximal de cadres de pile pris en charge par Visual Studio a été dépassé."

Notes de côté: J'utilise déjà le correctif HAP de sjdirect .

Voici un instantané (il répète comme ça tout le chemin).

Existe-t-il un moyen d’élargir le nombre de cadres de pile que Visual Studio peut suivre au moins autant que l’application peut en allouer avant de remplir sa pile? Ou peut-on faire l'inverse, à savoir réduire la taille de la pile de l'application déboguée?

Réponse acceptée

Le problème avec StackOverflowExceptions est qu’elles sont si profondes que la pile est efficacement mise à la poubelle. Cette page contient un exemple récursif qui provoque cette condition qui aboutit à 80 000 niveaux sur la pile.

En considérant VS dernier que j'ai lu est toujours une application 32 bits qui émule 64 bits pour le débogage, vous dépensez peut-être bien au-delà de la mémoire disponible pour que VS gère la quantité de niveaux de pile pour vous.


Réponse populaire

Aucune caractéristique apparente ne permet de limiter la taille de la pile de l'application CLR ou d'augmenter le nombre d'images de la pile suivie de Visual Studio.

En guise de solution, je vais simplement abandonner HtmlAgilityPack pour extraire le texte (des choses comme celle -ci ne sont pas vraiment des solutions) et écrire moi-même un vieux HTML en analyseur de texte ou essayer l'une des réponses à d'autres questions similaires postées sur StackOverflow à la question de Matt Crouch , bien qu'aucune des réponses ne soit appropriée pour extraire du texte restitué de milliers de pages)

Edit: bien que regex ne soit généralement pas recommandé, cela a en fait résolu mon problème (sans avoir à traiter avec StackOverflowException): Convertir du HTML en texte brut

Merci pour vos efforts et j'espère que cela aidera quelqu'un d'autre.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi