Android Studio 實用調試技巧

来源:http://www.cnblogs.com/valenhua/archive/2017/08/11/7345668.html
-Advertisement-
Play Games

Android Studio 是個發工具,其自身帶調式環境是很強大的,我們要擺脫只會使用Log列印日誌的低效的方法,掌握高級調試技巧對每個Android開發者都是很必要的,廢話少說,直入正題 調試方式:通過下麵方法進入調試 運行調試:點擊齒輪運行按鈕,IDE出現調試視窗; 附加進程: 如果App正在 ...


Android Studio 是個發工具,其自身帶調式環境是很強大的,我們要擺脫只會使用Log列印日誌的低效的方法,掌握高級調試技巧對每個Android開發者都是很必要的,廢話少說,直入正題

 

調試方式通過下麵方法進入調試

運行調試:點擊齒輪運行按鈕,IDE出現調試視窗;

附加進程:   如果App正在運行,點擊“蟲子”圖標選擇要調試的App進程即可;

成功操作後出現下麵的DEBUG懸浮欄,下一步就可以開始設置斷點

開始調試:

在代碼行滑鼠點擊左鍵就可以了,程式就能自動運行到斷點;

步進方式:是調試的核心和精華,掌握好很容易能獲得想要的數據,打開Run菜單我們看到豐富的步進方式(快捷方式根據方案和配置可以自由設定)

Step Into:單步前進,如果斷點包含子方法則進入方法(不會進入官方類庫的方法);

Force Step Into:在 Step Into 的基礎上能進入任何方法;

Smart Step Into:語句包含兩個或者以上方法鏈式調用,可以選擇進入那個方法,包括匿名內部類,尼姆達表達式也可以;

Step Out :單步前進,如果已在子方法裡面則跳出;

Step Over :單步前進,不進入子方法;

Drop Frame:  點擊該按鈕後,你將返回到當前方法的調用處重新執行,並且所有上下文變數的值也回到那個時候。只要調用鏈中還有上級方法,可以跳到其中的任何一個方法;

Resume Program: 繼續執行;

Force Run to Cursor:  顧名思義,就是直接跳到游標所在位置,這個非常方便調試所需要的語句;

說完步進,現在說說斷點;

條件斷點:在斷點的位置設置條件,那隻有符合條件的情況下才停下來,例如調試一個for迴圈的時候有幾百次迴圈但是想看到某個次數時候則相當方便;

 方法斷點:在方法開頭設置,斷點標識紅色四黑點的標識;

日誌斷點:滑鼠右鍵斷點,然後去掉Suspend,在log evaluated expression輸入要列印的表達式:”setValue=”+getValue(),然後運行程式;

看控制台我們能發現斷點日誌:

選log message to console後發現日誌信息也被列印出來

異常斷點:異常的時候觸發的斷點:1、點擊斷點管理,然後新增一個異常斷點

設置一個能產生異常的方法並執行它,就會發現異常會在這裡停掉;

設置一個能產生異常的方法並執行它,就會發現異常會在這裡停掉;

臨時斷點:斷點停下之後,就會被移除,調試過程中只會斷掉一次,按 ATL+滑鼠左鍵 就可以出現

失效斷點:暫時讓斷點失效,無需把它刪除;方法:ALT+滑鼠左鍵 在斷點上點擊

 

觀察調試:

 當斷點命中後,我們當然就是要觀察並獲取結果

  • 觀察變數:在斷點停留時候,在變數上 ALT+滑鼠左鍵 點擊就可以看到斷點的所有信息;

改變變數值:例如執行方法原來的值:

在Variables視窗右鍵滑鼠修改就可以改變值了:

添加到觀察視窗:如果多個標量或者多個表達式在多個不同的地方,要上下觀察是很麻煩的,我們可以把它Add to Watchs, 然後在觀察視窗就可以一次看到多個變數值;

計算表達式:計算這個變數的值,result運行到中間查看變數值就出現這樣的情況

計算方法調用結果: 輸入方法getValue(), 點擊執行,就可以得到這個方法的結果;

代碼片段模式:這個可以運行一段代碼得到結果而非一個表達式:

例如我們修改這個變數的值的片段:

標記object;選擇變數右鍵出現Mark Object菜單,點擊後輸入標簽就可以了:

至此大致內容完畢,關於調試的技巧,總的來說一個是斷點設定,一個是步進方法的掌握,希望大家多實踐,有任何問題歡迎寫信給我或者留言。最後,基礎很簡單,但很重要,不要看不起,走好每一步才能走得更遠。

歡迎長按二維碼關註我的公眾號:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、前言: 我們在實際工作中,或者在面試找工作時,都會用到或者被問到一個問題,那就是“數組如何去重”。是的,這個問題有很多種解決方案,看看下麵的十種方式吧! 二、數組去重方式大彙總: Methods 1: 思路:定義一個新數組,並存放原數組的第一個元素,然後將元素組一一和新數組的元素對比,若不同則存 ...
  • JavaScript Date 對象 Date 對象用於處理日期與實際。 創建 Date 對象: var now = new Date(). <script type="text/javascript"> var span = document.getElementById("spandate"); ...
  • 今天看來情書寫的文章,研究了一下大佬寫的文章,自己做一點總結。 其實,今天我想把我近期遇到的坑都總結一下:1.goBack的跨頁面跳轉,又兩種方法,一可以像兔哥那樣修改navigation源碼,二可以用navigationActions 2.父子組件的傳值,一可以用callBack 二可以用pubs ...
  • 參考資料:http://blog.csdn.net/ElinaVampire/article/details/51813677 大家先看一張關於組件掛載的經典的圖片: 下麵一一說一下這幾個生命周期的意義: getDefaultProps object getDefaultProps() 執行過一次後 ...
  • 標識符命名法最要有四種: Camel(駱駝)命名法:除首單詞外,其餘所有單詞的第一個字母大寫,如:fooBar; Pascal命名法:所有單詞的第一個字母大寫,如:FooBar; 下劃線命名法:單詞與單詞間用下劃線做間隔,如:foo_bar; 匈牙利命名法:廣泛應用於微軟編程環境中,在以Pascal ...
  • 1.developer.apple.com 申請開發者賬號 2.根據API Cloud創建證書: http://docs.apicloud.com/Dev-Guide/iOS-License-Application-Guidance 3.iTunes Connect上面新建APP 4. 下載 APP ...
  • 效果圖如下 1、自定義屬性,在value文件夾下新建attrs文件,聲明如下屬性 2、繼承ImageView ,重寫構造和ondraw方法 3、引入CircleImageView ...
  • Android MediaRecorder自定義解析度 工作這麼久了,確實積累了不少東西,但都是以文檔的形式存在U盤裡的,為什麼不寫博客呢?因為懶啊!!!總感覺博客太難寫了(大概是上學時候寫作文恐懼症 的後遺症吧……),不過現在看看那些積累的有些是自己總結,但也有不少是綜合網上各位大佬的文章提煉出來 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...