關於Unity3D的編輯器崩潰時的線索定位

原創帖傳送門:http://blog.csdn.net/jjiss318/article/details/7679277

    今天在Unity3D編輯器中進行功能測試的時候,編輯器突然崩潰了(就是整個窗口突然消失,進程直接結束)之後也沒有任何錯誤報告信息提示。好吧,應該是偶現問題,我僥倖地想,我用的好歹也是正版啊,不應該總出這種莫名其妙的問題吧難過

       再次進行同樣的功能測試,編輯器又崩潰了,依然沒有任何錯誤報告,這讓我想進行調試都無從調起。想想有什麼線索吧,突然想起編輯器在硬盤上也是有log輸出的,在崩潰的時候,如果已經進行了錯誤log輸出,那麼就可以找到崩潰的線索。在磁盤上翻了下,最後在以下目錄找到了log文件:

        C:\Documents and Settings\xxxx(用戶名)\Local Settings\Application Data\Unity\Editor,裏面有兩個文件:

        Editor.log——察看了下內容,屬於編輯器在編輯階段的log輸出,主要是編譯時產生dll信息,warning和錯誤。

        Editor-prev.log——這個是運行期的log輸出,包括了開發者自己調用Debug.log函數族所輸出的信息,以及Mono本身的運行時異常信息

        在Editor-prev.log中終於有所發現:

        StackOverflowException: The requested operation caused a stack overflow.
  at System.Convert.ToInt32 (Double value) [0x00000] in <filename unknown>:0 
  at Test.Scan (Int32 _depth, Int32 _octant, Double _startSlope, Double _endSlope) [0x00041] in     F:\TestDemo\Assets\Test.cs:384 

        就是棧溢出了,看了下Scan函數,是個遞歸函數,確實會造成棧溢出,走讀了下代碼,崩潰得以解決。我在想,爲什麼諸如NullReference之類的異常不會導致Unity3D編輯器崩潰,而棧溢出會導致呢?還是說並非所有的棧溢出異常都回導致編輯器崩潰呢?

小結:當編輯器崩潰無法察看console上的輸出信息時,可以到硬盤的目錄下尋找線索:

        C:\Documents and Settings\xxxx(用戶名)\Local Settings\Application Data\Unity\Editor


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章