我使用Google Breakpad在崩潰時爲我的Windows應用程序生成崩潰轉儲。使用breakpad創建CLR轉儲
我的應用程序混合使用C++與C#CLR代碼的本地代碼。 breakpad生成的轉儲不包含任何CLR信息。
是否有可能把CLR傾倒在與Breakpad?創建CLR轉儲需要哪些API?
我使用Google Breakpad在崩潰時爲我的Windows應用程序生成崩潰轉儲。使用breakpad創建CLR轉儲
我的應用程序混合使用C++與C#CLR代碼的本地代碼。 breakpad生成的轉儲不包含任何CLR信息。
是否有可能把CLR傾倒在與Breakpad?創建CLR轉儲需要哪些API?
你是什麼意思「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
我需要託管代碼中的邏輯堆棧跟蹤。 我所看到的是CLR虛擬機中的函數調用。 當我使用vs2010以混合模式調試轉儲時,vs2010抱怨託管的調試信息不可用。 如果我使用cdb.exe創建轉儲,則從vs2010以混合模式進行調試效果良好。 –
什麼正如我在How do I take a good crash dump in .NET解釋,下列條件應滿足:
後者對應於MINIDUMP_TYPE枚舉的MiniDumpWithFullMemory
。
Dbghelp進行了優化,爲本機代碼創建小型轉儲。與垃圾收集堆的概念不太相容。您需要告訴MiniDumpWriteDump()還捕獲* all *堆內存,以便包含垃圾收集堆。結果不能再被稱爲「迷你」了。用sos進行調試也很不錯。 –
如果您將您的評論作爲答案,我會將其標記爲答案 –