Как увидеть трассировку стека приложения .NET - PullRequest
3 голосов
/ 29 октября 2009

У меня есть .NET приложение Windows в рабочей среде, которое не имеет доступа к Visual Studio (стандартная версия), и единственное, что они могут установить, это Express редакция, которая не имеет опции отладки Just-In-Time (той, у которой есть кнопка отладки, когда она падает). Поэтому мне было просто интересно, есть ли инструмент отладки приложений Windows или что-то еще, что я могу запустить или прикрепить, чтобы увидеть трассировку стека. Я также включил PDB в своем приложении, но он не предоставляет больше информации, поэтому я могу отслеживать свои сбои (вызванные необработанными исключениями).

Ответы [ 6 ]

6 голосов
/ 29 октября 2009

Если вы перехватываете исключения, объект Exception содержит трассировку стека: Exception.StackTrace . Кроме того, у вас есть доступ к нему с Environment.StackTrace .

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

// Sample for the Environment.StackTrace property
using System;

class Sample
{
    public static void Main()
    {
        AppDomain.CurrentDomain.UnhandledException += 
          new UnhandledExceptionEventHandler(UnhandledExceptions);

        Console.WriteLine("StackTrace: '{0}'", Environment.StackTrace);
        throw new Exception("Fatal Error");
    }

    static void UnhandledExceptions(object sender, UnhandledExceptionEventArgs e)
    {
        string source = "SOTest";
        if (!System.Diagnostics.EventLog.SourceExists(source))
        {
            System.Diagnostics.EventLog.CreateEventSource(source, "Application");
        }

        System.Diagnostics.EventLog log = new System.Diagnostics.EventLog();
        log.Source = source;

        log.WriteEntry(e.ExceptionObject.ToString(), 
                       System.Diagnostics.EventLogEntryType.Error);
    }
3 голосов
/ 29 октября 2009

Вы также можете использовать windbg и sos.dll

1 голос
/ 29 октября 2009

Следы стека исключений приложений .NET регистрируются в вашей программе просмотра событий в разделе Приложения.

Эта ссылка выдает 404:

альтернативный текст http://eduncan911.com/blog/thumbnail/exception-in-iis-stackoverflow-logs.png

1 голос
/ 29 октября 2009

Вы можете попробовать CLR Profiler

0 голосов
/ 29 октября 2009

Использование:

.NET Framework 2.0 SDK поставляется с отладчиком Microsoft CLR. Он работает аналогично отладчику Visual Studio (хотя исходные файлы доступны только для чтения), поэтому вы можете попробовать его.

0 голосов
/ 29 октября 2009

Может быть, EQATEC Tracer может помочь вам.

...