[Trace Code] 03-搜尋大法
情境
前面介紹了兩種快速找到問題源頭方法,還沒看過的可以先參考:
在偵錯模式下,工具可以幫助我們快速找到問題的發生地。但更多時候,客戶回報問題只會有錄影或截圖。這時候要找問題發生地,就只能使用強大的搜尋功能啦~
這次可以使用這個範例來練習
GitHub: https://github.com/dreambo4/NavigationDemo
工具介紹
我常用的搜尋工具主要有兩個
- Search Everywhere
- 快捷鍵:連點兩下 Shift
- 快速搜尋並開啟 Class
- 不一定需要輸入完整,”HomeActivity” 只需要輸入 “HA”就能找到
- Find in Files
- 快捷鍵:Cmd + Shift + F (Windows: Ctrl + Shift + F)
- 可以針對字串搜尋
- 右上角的 File mask 可以只針對某副檔名搜尋。例如你很確定這個字串應該是在 layout 中使用,可以限定
*.xml
;或是很確定有某個註解關鍵字在程式中,可以限定*.kt
或*.java
。 - 漏斗符號:可以過濾是否為字串或註解的內容。
使用步驟
這邊分享幾個我平常搜尋過程中的思路
以這個APP畫面為例,如果要你使用搜尋法找到這個頁面,你會搜尋什麼關鍵字呢?
第一種 - 使用 Search Everywhere
首先,這是登入畫面,所以我會先用 Search Everywhere 搜尋 Login
相關的頁面。幸運的話,很快就可以找到 LoginActivity
或 LoginFragment
。
第二種 - 使用 Find in Files
若頁面不是可以直觀猜到名稱的,那麼我會使用 Find in Files 搜尋關鍵字,這時挑選合適的關鍵字就很重要了。
- 我會先淘汰 A、E,因為這些詞很常出現在註解或是 API 欄位的描述中
- H 的的內容,很明顯來自 API,不是 APP 端定義的字串
- 再來 B、D、G,這三個詞在 APP 中很可能有其他入口,或在其他頁面也有使用,所以也不會是第一首選
- 剩下 C、F,這兩個看起來比較像只有在登入頁才會出現的字串
關鍵就是盡量挑選「固定不變動」、「獨一無二」的字串。只要找對關鍵字,很快就能順藤摸瓜找到 Layout,再找到相關 Class。
工具優缺
- 優點
- 手邊沒有偵錯工具時,依然可以使用
- 缺點
- 需要依靠經驗,挑選合適的搜尋關鍵字