Исключение Traceback StackOverflow - PullRequest
       1

Исключение Traceback StackOverflow

2 голосов
/ 10 февраля 2011

У меня есть сайт Umbraco, использующий достаточное количество пользовательских контролей, в которых где-то - как-то, время от времени возникает исключение stackoverflow. Поскольку SOE не возникает, когда тестирование связано с тем, что пользователь публикует или получает некоторую информацию (достаточно справедливо: что-то я пропустил).

Как я могу отследить, где произошло мое исключение stackoverflow внутри моего кода? Есть ли инструменты для проверки моих источников, чтобы узнать, пропустил ли я какой-нибудь рекурсивный метод? Или как мне отладить запущенный процесс?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2016

Если приложение аварийно завершает работу, включите этот параметр реестра, чтобы создать сбой для всех сбойных приложений:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
    "DumpFolder"="C:\\TEMP"
    "DumpCount"=dword:00000010
    "DumpType"=dword:00000002

Это создаст аварийный дамп в папке C: \ Temp.Либо откройте этот файл дампа в более новой версии Visual Studio, которая покажет вам точный код, в котором произошел сбой (точно так же, как при отладке и появлении необработанного исключения).

Или чрезвычайно полезный инструмент MS для всехВаши потребности в анализе дампа: Инструменты диагностики отладки (https://www.microsoft.com/en-us/download/details.aspx?id=49924). Видео-пошаговое руководство здесь: https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-123-DebugDiag-Part-3

Это проанализирует ваше аварийное приложение и покажет вам все потоки и их управляемые и неуправляемые стековые трассировки.точно укажите причину сбоя и место его возникновения, чтобы вы могли проверить эту трассировку стека.

Если, однако, программа не завершилась сбоем, вы можете открыть диспетчер задач и щелкнуть правой кнопкой мыши по процессу и вручную создать файл дампа.Этот файл дампа с помощью Debug Diagnostics при анализе сбоев покажет вам последние X-исключения, которые произошли в вашем приложении со стековыми трассами. Я использую этот метод, чтобы найти фактическую ошибку пользовательских приложений, когда пользователь получает хорошее упрощенное сообщение об ошибке.альтернатива тo Создавая дамп из TaskManager, вы также можете использовать procdump.exe или Debug Diagnostics для создания правил о том, когда создавать файлы дампов.

Я действительно считаю, что все больше людей должны знать о том, как невероятно легко DUMP-файл вместе с Debug Diagnostics найти любую ошибку, которая произошла в производственной среде, где у нас нет доступных удобных инструментов разработки.

0 голосов
/ 10 февраля 2011

Я обнаружил, что отладка приложения (иногда приходится подключать VS к правильному w3wp.exe процессу) и установка VS на останов по исключению является наиболее полезным.Вы все еще можете видеть трассировку стека, которая полна той же серии вызовов методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...