我在生产中有一个.NET Windows应用程序,它无法访问Visual Studio(标准版),它们唯一可以安装的版本是Express版本,该版本没有即时调试(Just-In-Time Debugging)选项(在崩溃时具有调试按钮的选项)。所以我只是想知道是否有Windows应用程序调试工具或其他我可以运行或附加以查看堆栈跟踪的工具。我还在我的应用程序中启用了PDB,但它没有提供任何更多信息,所以我可以跟踪我的崩溃(由未处理的异常引起)。如何查看.NET应用程序的堆栈跟踪
回答
您还可以使用WinDbg和sos.dll
你可以尝试CLR Profiler
它是否为Stacktrace的内容提供了一个很好的输出?像班级和行号,导致我的崩溃是未经处理的。 – paradisonoir 2009-10-28 21:43:48
@paradisonoir:Fyi,行号只有在您拥有程序集的pdb时才可用。否则,您只需获取堆栈位置和方法名称。 – eduncan911 2009-10-28 22:45:06
+1提到一个解决OP问题的自由分析器,即显示堆栈跟踪。为了记录,这里是CLR Profiler 2.0的链接:http://tinyurl.com/ClrProfiler2 – galaktor 2010-06-17 08:20:57
也许EQATEC Tracer可以帮助你。
我用它开始了我的应用程序,但它在崩溃发生后没有任何我的堆栈跟踪输出。 – paradisonoir 2009-10-29 16:45:52
该链接现在已损坏。 – 2013-01-25 09:49:03
如果捕捉异常,则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);
}
所以我可以打印出一些无显着的异常呢? – paradisonoir 2009-10-28 21:43:12
是的。您可以使用日志框架将它们写入错误日志。 – 2009-10-29 02:39:59
@paradisonoir - 我添加了一个未处理的异常事件处理程序,它将日志(包括堆栈跟踪)写入事件日志。 – 2009-10-29 04:14:24
.NET应用程序异常的堆栈跟踪会记录在“应用程序”下的“事件查看器”中。
alt text http://eduncan911.com/blog/thumbnail/exception-in-iis-stackoverflow-logs.png
我想你会发现他们只会在这里结束,如果你自己登录他们,当抛出异常! – 2009-10-28 21:29:45
我在我的应用程序中遇到了异常情况,我不会在此处显示。 – eduncan911 2009-10-28 21:30:40
我的ASP.net应用程序还会自动将未处理的异常记录到事件日志中。无需代码。 – pyrocumulus 2009-10-28 21:32:07
用途:
.NET Framework 2.0 SDK随附Microsoft CLR调试器。它的工作方式类似于Visual Studio调试器(尽管源文件是只读的),因此您可以尝试一下。
您也可以将全局异常处理程序添加到您的应用程序中。 http://blogs.msdn.com/lexli/archive/2009/04/28/how-to-handle-net-unhandled-exceptions-gracefully.aspx – 2009-10-29 02:34:09
- 1. 如何查看我的Wicket应用程序的堆栈跟踪?
- 2. 查看JWS应用程序堆栈跟踪?
- 3. 如何查看堆栈跟踪,当应用程序由C/C++异常崩溃?
- 4. 堆栈跟踪如何构建以及堆栈如何跟踪?
- 5. 如何从rails中的应用程序获取堆栈跟踪?
- 6. 如何在.NET中记录应用程序的整个堆栈跟踪
- 7. 从javascript堆栈跟踪中查找Java实际堆栈跟踪
- 8. Rails应用程序和查找堆栈跟踪
- 9. 如何堆栈跟踪extlib?
- 10. 如何跟踪查询的原因/堆栈跟踪NHibernate的
- 11. 如何查看Android Studio中的整个堆栈跟踪?
- 12. 如何在Android中查看完整的堆栈跟踪?
- 13. 如何在android中查看错误堆栈跟踪?
- 14. NodeJS 6:如何查看整个错误堆栈跟踪?
- 15. 日志堆栈跟踪的Play应用
- 16. 如何获取ABAP中的程序调用堆栈跟踪?
- 17. 无法理解堆栈跟踪MVC .NET
- 18. 如何在死亡进程后看到堆栈跟踪?
- 19. 堆栈跟踪3
- 20. Android应用程序中的自定义堆栈跟踪
- 21. 如何获得正确的堆栈跟踪而不是反射堆栈跟踪?
- 22. 禁用PHP堆栈跟踪
- 23. 如何查看运行时崩溃的已部署应用程序的堆栈跟踪
- 24. 多个程序员如何使用crashrpt堆栈跟踪?
- 25. 如何查看Android应用程序的任务堆栈?
- 26. setItemDelegateForColunm()crasches应用程序,而不堆栈跟踪
- 27. 应用程序堆栈跟踪解释MDB
- 28. 堆栈跟踪从来没有追溯应用程序代码
- 29. 应用程序崩溃setContentView android没有堆栈跟踪
- 30. 在MonoMac应用程序堆栈跟踪上打印行号
即使是中级开发人员也很难。也许他们可以使用DebugDiag或其他工具来生成崩溃转储并使用WinDbg进行分析。然后,一个简单的“分析-v”足以打印出异常信息。 – 2009-10-29 02:30:18
是否可以从Windbg生成行号?因为我可以获取方法名称,但不能获得行号。 – paradisonoir 2009-10-29 16:46:33
只有当你有符号时,我才认为它也必须以调试模式构建。 – 2009-10-29 21:47:02