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

2021-06-22 04:34:05 字數 872 閱讀 1221

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

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

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 :0 

at test.scan (int32 _depth, int32 _octant, double _startslope, double _endslope) [0x00041] in     f:\testdemo\assets\test.cs:384 

就是棧溢位了,看了下scan函式,是個遞迴函式,確實會造成棧溢位,走讀了下**,崩潰得以解決。我在想,為什麼諸如nullreference之類的異常不會導致unity3d編輯器崩潰,而棧溢位會導致呢?還是說並非所有的棧溢位異常都回導致編輯器崩潰呢?

詳情介紹: 

Unity 3D 編輯器模式下 讀寫文字

unity 可以利用c 的file類來讀寫文字,此時只需要提供乙個目錄即可。這裡需要注意的是,編輯器模式下讀寫文字是很方便的,但是一旦打包發布,assets 目錄都不存在了,執行時是無法讀取它目錄下的文字的。using system.io using system.text using unitye...

Unity3D之Shader自定義編輯器功能拓展

一 前言 最近在開發乙個關卡類的遊戲,在匯入一些3d物體的時候,發現很多時候同乙個3d物體需要渲染的方式不一樣,比如這顆樹要雙面渲染 cull off 但在很多情況下是可以剔除背面 cull back 的,之前在寫shader方面找不到什麼好方法直接控制,乾脆就寫了兩個shader,這就造成了無謂的...

Unity3D的編輯器擴充套件 右鍵彈出選單欄

最近用u3d的編輯器擴充套件api來寫乙個動畫幀事件編輯器,其中有不少實用的東西,在這裡分享下 現在要是在乙個介面上繪製乙個小盒子,然後對著滑鼠右鍵點選盒子,可以彈出選擇框,大概如下 public void draw rect rect 效果應該是醬紫的 看起來還不錯 event.current這個...