我在生產中有一個.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