2013-09-27 60 views
0

我想爲.Net C#應用程序創建崩潰轉儲。 爲此,我寫了這將崩潰的堆棧溢出異常的應用代碼:procdump不爲StackOverflow創建轉儲異常

namespace Crashme 
{ 
    class Program 
    { 


     static void Main(string[] args) 
     { 
      for (int i = 0; i < 10; i++) 
      { 
       System.Threading.Thread.Sleep(2000); 
      } 

      Console.WriteLine("Calling text"); 

      crash obj = new crash(); 
      obj.sMyText = "abc"; 

     } 
    } 

    class crash 
    { 
     public string sMyText 
     { 
      get { return sMyText; } 
      set { sMyText = value; } 
     } 
    } 
} 

的procdump命令我使用:

.\procdump.exe -ma -e crashme.exe crash_dump1.dmp 

預期該應用程序崩潰和procdump方興未艾它也。我可以在procdump監視控制檯打印中看到。 但沒有轉儲正在創建。

猜猜我沒有使用正確的procdump命令。有人可以幫忙嗎?

回答

0

我想你使用的是正確的命令。我重複了你的問題。它只是不起作用。你可以嘗試在sysinternals論壇上發帖。

http://forum.sysinternals.com/

我也有procdump一個懸而未決的問題:

launching procdump from a 64-bit service doesn't work when running as Local Service or Local System

公司轉而使用ADPlus的。我們更快樂,能夠針對不同類型的異常配置不同的操作,這是非常好的。

即使使用adplus它看起來有點棘手。

Help catching StackOverflowException with WinDbg and ADPlus

+0

我計算出,使用procdump -ma -e -t crashme.exe crash_dump1.dmp是創建轉儲文件給我。但是當我嘗試使用Visual Studio 2010進行調試時,我找不到任何進一步的信息,因爲它總是返回程序集而不是指出錯誤的行號和模塊。你能幫我解決嗎? – Kallol

+0

我在想,使用-t可能爲時已晚,無法獲得有用的轉儲文件。 -t \t進程終止時寫入轉儲。 您希望在發生堆棧溢出異常時獲取轉儲文件。 – Derek

+0

就像我說的,你可能需要在sysinternals論壇發帖或者開始學習adplus(並且在我的答案中使用鏈接來處理StackOverflowException)。 – Derek