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

來源:互聯網
上載者:User

今天在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

詳情介紹: http://url.cn/RTBgdY

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.