Visual Studio теряет первые кадры стека в исключении StackruException

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

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

Примечания: я уже использую исправление HAP в sjdirect.

Вот снимок (он повторяется так до конца).

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

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам