Visual Studio pierde los primeros marcos de pila en StackOverflowException

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

Pregunta

Estoy ejecutando un rastreador web y analizando el contenido de la página con HtmlAgilityPack y obtengo aleatoriamente una excepción StackOverflowException en esa biblioteca de C #, pero cuando intento ver la lista de Pila de llamadas hasta mi código, obtengo:

"Se ha superado el número máximo de marcos de pila admitidos por Visual Studio".

Notas: Ya estoy usando la solución HAP de sjdirect .

Aquí hay una instantánea (se repite así todo el tiempo).

¿Hay alguna forma de aumentar el número de cuadros de pila que Visual Studio puede rastrear, al menos hasta la capacidad que la aplicación puede asignar antes de llenar su pila? ¿O se puede hacer lo contrario, es decir, reducir el tamaño de pila de la aplicación depurada?

Respuesta aceptada

El problema con StackOverflowExceptions es que son tan profundos que la pila se destruye de manera efectiva. Esta página tiene un ejemplo recursivo que causa esta condición que termina con 80,000 niveles en la pila.

Considerando que VS la última vez que leí es una aplicación de 32 bits que emula 64 bits para la depuración, es posible que esté pasando la memoria disponible para que VS administre la cantidad de niveles de pila.


Respuesta popular

No hay ninguna característica aparente que restrinja el tamaño de pila de la aplicación CLR o aumente el conteo de cuadros de pila rastreados de Visual Studio.

Como una solución, simplemente renunciaré a HtmlAgilityPack para extraer el texto (cosas como esta no son realmente soluciones) y me escribiré un analizador de texto HTML antiguo o intentaré una de las respuestas a otras preguntas similares publicadas en StackOverflow (muy similar a la pregunta de Matt Crouch , aunque ninguna de las respuestas es adecuada para extraer texto rendible de miles de páginas)

Edición: aunque generalmente no se recomienda la expresión regular, esto realmente resolvió mi problema (sin tener que lidiar con la excepción StackOverflowException): Convertir HTML a texto sin formato

Gracias por sus esfuerzos y espero que esto ayude a alguien más.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué