你是不是有著這樣的煩惱:
- 調試程序常常需要到處打印日志 (沒辦法,debug需要)
- 打印日志需要對代碼進行修改 (改來改去一不小心就忘了刪除,或者破壞了代碼)
- 改完代碼還要重新編譯 (編譯一次要等待好久!)
怎么辦?
有沒有誰能滿足我,讓我愉快地debug?沒有天馬行空的日志代碼,沒有每次重新編譯的苦苦等待?
好吧騷年,我看你骨骼驚奇,是萬中無一的debug奇才,來來來,我偷偷告訴你,你可知AndroidStudio的斷點不僅僅提供斷點嗎?(知道的當我沒說)
好,下面我介紹AS的一種功能:斷點處日志輸出。
首先看下下面這段代碼,如果我們需要打印日志,常常會像這樣做,直接在代碼中編寫Log代碼,重新編譯后在控制臺查看輸出。
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private String mTestStr = "test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "mTestStr: "+mTestStr);
}
}
然而我不想hardcode,也不想重新編譯。這時候,看看下面:
上圖是一個簡單的斷點,但是我們右鍵點開,發現竟然還有一些奇怪的東東。其中Suspend
即 暫停
,若此值被選中,則代表著代碼運行到此處會暫停,也就是我們常常使用的斷點功能啦。
“如果不選中呢?”
“廢話,那就是不暫停啦!”
“誒,不暫停你丫干啥吃呢?!”
別急,仔細看看,這里還另有乾坤!
其他的部分我就不說了(哼,我才不會說我還不懂呢),來看看今天的主角Log evaluated expression
。這是什么意思呢?簡單說就是日志表達式,也就是日志輸出的內容。
我們給Log evaluated expression
打上勾,并簡單地在這里輸入想要打印的日志。咦,竟然還有提示,不錯不錯。
接下來,開啟調試模式,不會開的同學可以看看下面這個:
點開后可以看到當前能debug的進程,選中你想調試的進程雙擊就能綁定進程開始調試了,具體就不多說了。
接下來,只要程序運行到對應的斷點位置(好吧,應該不算斷點了吧=。=),在調試臺中就能看到日志的輸出了~~
結語
在調試模式下利用斷點輸出日志方便快捷,不用修改代碼也不用重新編譯。當然,調試模式還是有缺點的,那就是——卡,相信大家都深有感受吧,不過比起hardcode和編譯等待時間,這點小卡頓常常更值得。
此外,如上文所看到的,調試模式除了日志輸出,還有其他功能等待我們探索。