我在生產中有一個.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. 如何從rails中的應用程序獲取堆棧跟蹤?
- 4. 如何在.NET中記錄應用程序的整個堆棧跟蹤
- 5. 如何堆棧跟蹤extlib?
- 6. 如何查看Android Studio中的整個堆棧跟蹤?
- 7. 如何在android中查看錯誤堆棧跟蹤?
- 8. 如何獲取ABAP中的程序調用堆棧跟蹤?
- 9. 如何在死亡進程後看到堆棧跟蹤?
- 10. 無法理解堆棧跟蹤MVC .NET
- 11. Android應用程序中的自定義堆棧跟蹤
- 12. 多個程序員如何使用crashrpt堆棧跟蹤?
- 13. setItemDelegateForColunm()crasches應用程序,而不堆棧跟蹤
- 14. 應用程序堆棧跟蹤解釋MDB
- 15. 堆棧跟蹤從來沒有追溯應用程序代碼
- 16. 應用程序崩潰setContentView android沒有堆棧跟蹤
- 17. 如何登錄node.js的堆棧跟蹤
- 18. 如何打印StackOverflowException的堆棧跟蹤
- 19. 在C#中如何收集程序崩潰的堆棧跟蹤
- 20. VB6中的堆棧跟蹤
- 21. eclipse中的堆棧跟蹤
- 22. 如何在MFC 8.0應用程序中訪問malloc的完整堆棧跟蹤?
- 23. 記錄調用者應用程序堆棧跟蹤以及每個sql查詢
- 24. 如何在使用adb install安裝應用程序時獲取堆棧跟蹤?
- 25. 如何在Octave的調試模式下看到堆棧跟蹤
- 26. 如何在正常執行的.NET中獲取堆棧跟蹤?
- 27. SetUnhandledExceptionFilter處理程序如何打印堆棧跟蹤?
- 28. 如何打印Groovy堆棧跟蹤?
- 29. 如何縮短webpack堆棧跟蹤?
- 30. 如何發送堆棧跟蹤到log4j?
即使是中級開發人員也很難。也許他們可以使用DebugDiag或其他工具來生成崩潰轉儲並使用WinDbg進行分析。然後,一個簡單的「分析-v」足以打印出異常信息。 – 2009-10-29 02:30:18
是否可以從Windbg生成行號?因爲我可以獲取方法名稱,但不能獲得行號。 – paradisonoir 2009-10-29 16:46:33
只有當你有符號時,我才認爲它也必須以調試模式構建。 – 2009-10-29 21:47:02