在Unity編輯器中開發(fā)遇到問題BUG如何調(diào)試解決?

來源:unity
作者:大智
時間:2020-08-25
3939
這一節(jié)主要講在Unity編輯器中的問題解決方法。

最近遇到很多童鞋,在自己學習開發(fā)的時候,順利的時候還好,一遇到問題就無處下手,今天大智給你分享一下自己的“破案術(shù)”,讓你解決問題不再迷茫。

這一節(jié)主要講在Unity編輯器中的問題解決方法,發(fā)布后的程序(如PC端、WebGL、Andnroid、iOS等)出現(xiàn)異常、崩潰等情況,后面再專門寫文章去探討。

解決問題一般分為幾步:

1、觀察表現(xiàn),收集線索,復(fù)現(xiàn)問題

2、推測問題所在位置

3、嘗試修改并驗證

4、驗證是否引入了其他問題

1、觀察表現(xiàn),收集線索,復(fù)現(xiàn)問題

收集線索是解決問題最重要的一步,有了線索就可以抽絲剝繭,定位問題。

收集線索通常也是最難的一步,原則是:不放過任何信息,將問題復(fù)現(xiàn)。

對于英文信息,你要搞明白英文信息的含義。

一般線索從以下幾個渠道搜集:

相關(guān)提示信息

報錯信息

日志信息

運行表現(xiàn)

近期修改的代碼

相關(guān)提示信息

相關(guān)提示信息包括各種彈出框、界面上的信息/警告等等。

很多同學對這些信息視而不見,命名彈出框已經(jīng)明確告訴你缺少XXX東西了,但是你看都不看就給它關(guān)掉了。我太難了。

比如下圖Unity打包Android時的提示:

af008a6b-602c-448d-a9f4-cf9e5ff35b41_78733_14657db45b8091d5_1_.png

上面這個提示,只要你把英文看明白,就知道原因是什么,解決辦法是什么。

報錯信息

很多時候出現(xiàn)問題會有報錯或者異常信息,這是非常好的線索。因為報錯/異常通常很具體,而且很多可以定位到具體的代碼位置。

對于報錯信息一定要完整的瀏覽,不要只看一句報錯的概要。

完整的報錯信息可能包含:報錯的概要信息、詳細信息、調(diào)用堆棧等等。

有些時候在有異常的時候,異常信息中已經(jīng)包含了解決異常的辦法,一定要仔細去看。

日志信息

日志信息是在運行過程中產(chǎn)生的信息,通常是使用

Debug.Log

Debug.Warn

Debug.Error

等輸出的內(nèi)容。

日志信息雖然不能直接定位到錯誤的位置,但是可以看到運行出錯之前運行的情況以及對應(yīng)的代碼行。

注意日志信息都是你自己寫代碼時加的,所以記得在關(guān)鍵位置,或者覺得直覺上容易有BUG的地方保留一些日志。

運行表現(xiàn)

運行表現(xiàn)也就是程序運行中,出現(xiàn)問題時的表現(xiàn)。

運行表現(xiàn)是比較表面的線索,這需要你對代碼比較熟悉,才能定位到相關(guān)的代碼。

近期修改的代碼

如果之前運行沒有BUG,在修改過某些代碼之后出現(xiàn)了錯誤,就需要著重去排查近期修改的代碼中引入的問題。

很多同學說過這樣的話:“我什么都沒動,昨天還好好的,今天就跑不起來了”。

這話你信么?

我信,不過只有5%的可能是因為運行環(huán)境或者服務(wù)器出現(xiàn)的問題,95%還是你不經(jīng)意間改了什么東西導(dǎo)致的。

如果是你不經(jīng)意間改了什么東西,這個問題還是挺難找的。最好的解藥就是版本控制。

一定要做好版本控制,否則你一次不經(jīng)意間的修改可能會浪費掉一周的時間來DEBUG。

2、推測問題所在的位置

比如有報錯/異常信息、日志信息的時候,基本上可以直接定位到有問題的代碼行,這樣就比較簡單。

還有很多時候沒辦法定位到具體的代碼,那該怎么找到出問題的位置呢?

通常有幾種方式:

加Log

斷點調(diào)試

添加/刪除代碼法

斷點調(diào)試

斷點調(diào)試是一個非常常用的工具,適用于大部分可復(fù)現(xiàn)的問題。

通過在代碼編輯器中打斷點,一步一步執(zhí)行,可以清楚的看到每一步執(zhí)行后的結(jié)果。

斷點調(diào)試也是一個比較大的話題,后面咱們在開一篇去探索一下。

斷點調(diào)試不太適用的情況有:循環(huán)和多線程。

加Log

不斷加Log,直到能定位到出問題的地方。在循環(huán)和多線程中出現(xiàn)的問題,加Log這種方法也能有很好的表現(xiàn)。

如果問題是100%復(fù)現(xiàn)的,那就比較好辦了??隙芏ㄎ坏絾栴}所在的位置。如果是偶爾出現(xiàn)的,這種問題最難發(fā)現(xiàn),只能不斷加Log,期待它下次出現(xiàn)時能抓到他。

刪除/添加代碼法(二分法)

在遇到非常復(fù)雜的情況時,可以通過定位大概的范圍,然后通過二分法刪除/添加代碼來定位問題。

具體步驟很簡單:

先刪除一部分代碼,看看執(zhí)行是否如預(yù)期。如果還有問題繼續(xù)刪代碼。

如果運行代碼正常了,可以分批往里面添加代碼,直到問題出現(xiàn)。

在刪除添加的時候可以使用二分法來提高效率。

3、嘗試修改并驗證

改BUG這個就不用說了,定位到問題,也知道問題所在。

如果還不知道怎么改,這篇文章就幫不了你了,因為問題可能千變?nèi)f化。

可以根據(jù)線索信息去網(wǎng)上搜索或者找人請教。只要不是疑難雜癥,網(wǎng)上大部分都能搜到。

修改完后驗證是否解決了問題。如果沒有解決或者出現(xiàn)了其他問題,請繼續(xù)解決。

4、驗證是否引入了其他問題

最后,也是很多同學容易忽略的一個環(huán)節(jié),叫做回歸測試。

改完了一個BUG,興沖沖的提交代碼,打包發(fā)布,殊不知引入了一個更致命的問題。

在修改完BUG之后,一定要測試,或者給測試同學測試,或者跑自動的測試用例。

總結(jié)

好,以上就是大智的一些“破案術(shù)”,在遇到問題時,你可以按照上面的思路來干掉BUG。

原文鏈接:點擊前往 >
文章來源:unity
版權(quán)說明:本文內(nèi)容來自于unity,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼關(guān)注
獲取更多出海資訊的相關(guān)信息
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家