Visual Studio теряет первые стековые фреймы в StackOverflowException

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

Вопрос

Я запускаю веб-искатель и анализирую содержимое страницы с помощью HtmlAgilityPack и беспорядочно получаю исключение StackOverflowException в этой библиотеке C #, но когда я пытаюсь увидеть список стека вызовов до моего кода, я получаю:

«Максимальное количество фреймов стека, поддерживаемых Visual Studio, превышено».

Боковые заметки: я уже использую исправление HAP sjdirect .

Вот моментальный снимок (он повторяется, как это до конца).

Есть ли способ увеличить количество кадров стека Visual Studio может отслеживать, по крайней мере, столько, сколько приложение может выделить перед заполнением своего стека? Или можно сделать обратное, а именно уменьшить размер стека отлаженного приложения?

Принятый ответ

Проблема с StackOverflowExceptions заключается в том, что они настолько глубоки, что стек эффективно удаляется. Эта страница имеет рекурсивный пример, который вызывает это условие, которое заканчивается 80 000 уровней в стеке.

Учитывая, что VS последний, который я прочитал, по-прежнему является 32-разрядным приложением, которое эмулирует 64-битную для отладки, вы можете пропустить мимо доступной памяти для VS, чтобы управлять количеством уровней стека для вас.


Популярные ответы

Нет очевидной возможности ограничить размер стека приложения CLR или увеличить количество кадров отслеживаемого стека Visual Studio.

В качестве решения я просто отказаться от HtmlAgilityPack для извлечения текста ( такие вещи , как это на самом деле не решения) и написать себе старомодный HTML для синтаксического анализа или попробовать один из ответов другие подобные вопросы , размещенные на StackOverflow (очень похоже на вопрос Мэтта Крауча , хотя ни один из ответов не подходит для извлечения визуализируемого текста с тысяч страниц)

Изменить: хотя регулярное выражение обычно не рекомендуется, это фактически решило мою проблему (без необходимости иметь дело с StackOverflowException): конвертировать HTML в обычный текст

Спасибо за ваши усилия, и я надеюсь, что это поможет кому-то другому.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow