В исключении .net как получить трассировку стека со значениями аргументов - PullRequest
38 голосов
/ 01 октября 2008

Я пытаюсь добавить необработанный обработчик исключений в .net (c #), который должен быть максимально полезным для пользователя. Конечные пользователи в основном программисты, поэтому им просто нужен намек на то, с каким объектом они манипулируют неправильно.

Я разрабатываю окна, похожие на отчет об ошибках Windows XP, когда происходит сбой приложения, но это дает как можно больше немедленной информации о сгенерированном исключении.

Хотя трассировка стека позволяет мне (поскольку у меня есть исходный код) точно определить источник проблемы, у пользователей его нет, и поэтому они теряются без дополнительной информации. Само собой разумеется, я должен провести много времени, поддерживая инструмент.

Существует несколько системных исключений, таких как KeyNotFoundException, генерируемых коллекцией Dictionary, которые действительно меня беспокоят, поскольку они не включают в сообщение ключ, который не был найден. Я могу заполнить свой код сотнями блоков try catch, но он довольно агрессивен и содержит гораздо больше кода для поддержки, не говоря уже о тонне строк, которые должны быть локализованы.

Наконец, вопрос: есть ли способ получить (во время выполнения) значения аргументов каждой функции в трассировке стека вызовов? Одно это может решить 90% обращений в службу поддержки.

Ответы [ 11 ]

0 голосов
/ 01 октября 2008

Я не знаю ничего подобного, но хотел этого сам. Я обычно делаю это сам, когда выкидываю исключения, но если вы не бросаете, то вы можете быть вместе с остальными.

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