你是不是有著這樣的煩惱:
- 調(diào)試程序常常需要到處打印日志 (沒辦法,debug需要)
- 打印日志需要對代碼進(jìn)行修改 (改來改去一不小心就忘了刪除,或者破壞了代碼)
- 改完代碼還要重新編譯 (編譯一次要等待好久!)
怎么辦?
有沒有誰能滿足我,讓我愉快地debug?沒有天馬行空的日志代碼,沒有每次重新編譯的苦苦等待?
好吧騷年,我看你骨骼驚奇,是萬中無一的debug奇才,來來來,我偷偷告訴你,你可知AndroidStudio的斷點(diǎn)不僅僅提供斷點(diǎn)嗎?(知道的當(dāng)我沒說)
好,下面我介紹AS的一種功能:斷點(diǎn)處日志輸出。
首先看下下面這段代碼,如果我們需要打印日志,常常會像這樣做,直接在代碼中編寫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,也不想重新編譯。這時(shí)候,看看下面:

上圖是一個(gè)簡單的斷點(diǎn),但是我們右鍵點(diǎn)開,發(fā)現(xiàn)竟然還有一些奇怪的東東。其中Suspend即 暫停,若此值被選中,則代表著代碼運(yùn)行到此處會暫停,也就是我們常常使用的斷點(diǎn)功能啦。
“如果不選中呢?”
“廢話,那就是不暫停啦!”
“誒,不暫停你丫干啥吃呢?!”
別急,仔細(xì)看看,這里還另有乾坤!

其他的部分我就不說了(哼,我才不會說我還不懂呢),來看看今天的主角Log evaluated expression。這是什么意思呢?簡單說就是日志表達(dá)式,也就是日志輸出的內(nèi)容。
我們給Log evaluated expression打上勾,并簡單地在這里輸入想要打印的日志。咦,竟然還有提示,不錯(cuò)不錯(cuò)。

接下來,開啟調(diào)試模式,不會開的同學(xué)可以看看下面這個(gè):

點(diǎn)開后可以看到當(dāng)前能debug的進(jìn)程,選中你想調(diào)試的進(jìn)程雙擊就能綁定進(jìn)程開始調(diào)試了,具體就不多說了。
接下來,只要程序運(yùn)行到對應(yīng)的斷點(diǎn)位置(好吧,應(yīng)該不算斷點(diǎn)了吧=。=),在調(diào)試臺中就能看到日志的輸出了~~
結(jié)語
在調(diào)試模式下利用斷點(diǎn)輸出日志方便快捷,不用修改代碼也不用重新編譯。當(dāng)然,調(diào)試模式還是有缺點(diǎn)的,那就是——卡,相信大家都深有感受吧,不過比起hardcode和編譯等待時(shí)間,這點(diǎn)小卡頓常常更值得。
此外,如上文所看到的,調(diào)試模式除了日志輸出,還有其他功能等待我們探索。