2011-08-14 18 views
2

我使用Google Breakpad在崩潰時爲我的Windows應用程序生成崩潰轉儲。使用breakpad創建CLR轉儲

我的應用程序混合使用C++與C#CLR代碼的本地代碼。 breakpad生成的轉儲不包含任何CLR信息。

是否有可能把CLR傾倒在與Breakpad?創建CLR轉儲需要哪些API?

+2

Dbghelp進行了優化,爲本機代碼創建小型轉儲。與垃圾收集堆的概念不太相容。您需要告訴MiniDumpWriteDump()還捕獲* all *堆內存,以便包含垃圾收集堆。結果不能再被稱爲「迷你」了。用sos進行調試也很不錯。 –

+0

如果您將您的評論作爲答案,我會將其標記爲答案 –

回答

1

你是什麼意思「CLR信息」是什麼意思?我一直在使用Breakpad創建崩潰轉儲,並且可以使用SOS通過它們進行調試。

編輯:這裏就是你需要做的

.loadby sos clr $$ For .NET 4 
~0s $$ Most crashes are on Thread 0 
!pe $$ Print the exception 
~1s $$ Let's take a look at Thread 1 
!clrstack $$ Dump the managed stack 
+0

我需要託管代碼中的邏輯堆棧跟蹤。 我所看到的是CLR虛擬機中的函數調用。 當我使用vs2010以混合模式調試轉儲時,vs2010抱怨託管的調試信息不​​可用。 如果我使用cdb.exe創建轉儲,則從vs2010以混合模式進行調試效果良好。 –