首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機(jī)救磚 | ROM固件

查看: 10136|回復(fù): 0
上一主題 下一主題
[教程]

Android 軟件開發(fā)之如何使用Eclipse Debug調(diào)試程序詳解(十二)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
41002Android 開發(fā)之使用Eclipse Debug調(diào)試詳解   
   
1.在程序中添加一個斷點   
如果所示:在Eclipse中添加了一個程序斷點   
     
在Eclipse中一共有三種添加斷點的方法   
第一種: 在紅框區(qū)域右鍵出現(xiàn)菜單后點擊第一項 Toggle Breakpoint 將會在你右鍵代碼的哪一行添加一個程序斷點 (同樣的操作方可取消程序斷點)   
第二種: 在紅框區(qū)域雙擊鼠標(biāo)左鍵將會在你雙擊代碼的哪一行添加一個程序斷點 (同樣的操作方可取消程序斷點)   
     
第三種 :在光標(biāo)停留的地方使用快捷鍵 Ctrl + Shift +  B 將會在光標(biāo)停留的這一行添加一個程序斷點 (同樣的操作方可取消程序斷點)   
     
2.運行Debug 調(diào)試 讓程序停留在添加的斷點上   
如下圖所示,在紅框內(nèi)點擊下拉菜單選中需要調(diào)試的項目 則開始運行Debug調(diào)試   
如果不在下拉表中選直接點擊表示Debug運行默認(rèn)項目(默認(rèn)項目為上一次運行的項目)   
Debug調(diào)試  快捷鍵為單擊F11   
     
       分析一下如何科學(xué)的添加程序斷點, 上圖中我為了加斷點查看生成出來隨機(jī)數(shù)的值我一共添加了6個程序斷點,綠框表示最為科學(xué)的斷點位置 ,紅框表示不科學(xué)的位置。 我們分析一下為什么, 如果switch  case 中的代碼片段過長 或者 case 的數(shù)量過多 如果采用紅框的方式來添加程序斷點,程序員須要添加很多程序斷點萬一有疏漏 所以會很難快速定位代碼執(zhí)行到了那里 ,如果使用綠框的方式添加程序斷點,程序員只須要在斷點出按 F6 單步跳過這一行代碼就會走進(jìn)正確的case中方便繼續(xù)調(diào)試。   
     
   
        Debug調(diào)試運行后,程序停在了紅框處,按F6單步跳過 發(fā)現(xiàn)隨機(jī)數(shù)為4 程序停留在了綠框中,程序員可以迅速定位random的值為4   
   
   
3.程序停留后查看變量的數(shù)值   
   
       藍(lán)框中的內(nèi)容表示為斷點的入口方法, 就好比你的斷點是從那個方法進(jìn)來的,學(xué)會看這個真的非常重要, 好比我現(xiàn)在明確知道我的一個方法在被調(diào)用的時候方法中會出現(xiàn)錯誤,但是這個方法在程序中100個地方都在調(diào)用,我可能斷定實在那里調(diào)用的時候出的錯誤,我不可能在100個調(diào)用它的地方都加一個斷點,我可以在方法中添加程序斷點 然后在籃框中查看程序是從那個地方走進(jìn)這個方法的,便可以快速定位問題所在。   
   
綠框中可以查看當(dāng)前方法中所有變量的值,但是如果變量非常多在這里看就比較麻煩,可以使用紅框的方法查看。   
   
紅框中可以右鍵變量名點擊咖啡框中的watch 后 在紫框中Expressions  就可以看到變量的數(shù)值了。   
   
BreakPoints 中會記錄程序中添加過多少程序斷點。   
     
4分享一些Eclipse中Debug的一些小技巧   
   
        watch 過的變量 和我們自己加的程序斷點不會被Eclipse 自動刪除 除非我們手動刪除否則會一直留在紫框中,這些數(shù)值會拖慢Eclipse 開發(fā)工具,如果過多的話很可能會造成 Eclipse 崩潰(有可能是Eclipse的BUG),讓開發(fā)變得非常痛苦,所以雨松MOMO在這里建議大家在每次Debug調(diào)試的時候?qū)⒆峡蛑兄?加的程序斷點 和 watch過的變量 全不手動清空,只添加這一次調(diào)試須要的斷點就可以了,這樣的話 Eclipse 就不會被這些拖慢進(jìn)程的東西所導(dǎo)致崩潰。   
5.連接真機(jī)調(diào)試   
   
第一步 打開自己的手機(jī)在設(shè)置中選擇應(yīng)用程序 然后選擇開發(fā)  然后選中USB調(diào)試。   
第二步 用USB線連接手機(jī)到電腦,一般情況會自動安裝驅(qū)動,如果無法安裝驅(qū)動的話 就去下載一個豌豆莢 或者91助手,讓它幫我們手機(jī)自動安裝驅(qū)動 很方便的。   
第三步 驅(qū)動安裝成功后會在Device中看到真機(jī)(紅框中) 綠框中為android電腦模擬器   
     
       運行項目后彈出設(shè)備選擇窗口 第一個為模擬器 第二個紅框內(nèi)的為我連接電腦的真機(jī) MOTO的里程碑,選擇完后點擊OK 就可以通過真機(jī)來調(diào)試程序了,簡單吧?是不是很給力呢呵呵。   
     
6.Android 開發(fā)中Log信息的打印   
   
       本人做過J2ME 開發(fā) Android開發(fā) iPhone開發(fā) 發(fā)現(xiàn)J2ME 的模擬器 還有Iphone的模擬器都非常給力速度很很快(模擬器比真機(jī)快) 唯獨android的模擬器 是最不給力的 (真機(jī)比模擬器快) 實在是慢的不行 連接上真機(jī)可以快一點 但是一樣還是慢 尤其是Debug的時候 簡直是太不給力了(發(fā)點牢騷大家別介意哦 > - <)所以有時候我在開發(fā)Android的時候不到萬不得已我不去Debug 我會使用Log去打印我須要的數(shù)據(jù) 下面我教大家如何在Andoid下打印Log信息。希望大家都學(xué)會使用log.   
  1. public class testActivity extends Activity {   
          
        /**   
        * 返回一個隨機(jī)數(shù)   
        * @param bOTTon   
        * @param top   
        * @return   
        */   
        private int UtilRandom(int botton, int top) {   
        return ((Math.abs(new Random().nextInt()) % (top - botton)) + botton);   
        }   
        @Override   
        public void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);   
            
             
            int a = UtilRandom(0,5);   
            int b = UtilRandom(0,5);   
            int c = UtilRandom(0,5);   
            int d = UtilRandom(0,5);   
            int e = UtilRandom(0,5);   
         
               
               
               
            Log.v("random", a +"");   
            Log.v("random", b +"");   
            Log.v("random", c +"");   
            Log.v("random", d +"");   
            Log.v("random", e +"");   
               
            setContentView(R.layout.main);   
        }   
    }
復(fù)制代碼
常用的Log有5個:Log.v()Log.d()Log.i() Log.w() Log.e() 。   
根據(jù)首字母對應(yīng)VERBOSE,DEBUG,INFO, WARN,ERROR。   
以上這些Log系統(tǒng)都會打印出來。   
   
打開LogCat頁面發(fā)現(xiàn)系統(tǒng)打印了很多Log信息 我們不好定位出剛才自己打的Log,如圖所示點擊紅框內(nèi)的“+”符號彈出下方窗口后在Filter Name : 和 by Log Tag: (藍(lán)框內(nèi))填寫我們剛才打的LOG tag "random"注意這兩項都必需填寫 然后單擊OK后 方可在綠框中看到我們剛才打的random的Log 。怎么樣還是很簡單的吧 呵呵。   
     
最后附上Eclipse 在開發(fā)中使用到的快捷鍵很實用噢(轉(zhuǎn)載)   
   
Ctrl+1 快速修復(fù)(最經(jīng)典的快捷鍵,就不用多說了)   
Ctrl+D: 刪除當(dāng)前行   
Ctrl+Alt+↓ 復(fù)制當(dāng)前行到下一行(復(fù)制增加)   
Ctrl+Alt+↑ 復(fù)制當(dāng)前行到上一行(復(fù)制增加)   
Alt+↓ 當(dāng)前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)   
Alt+↑ 當(dāng)前行和上面一行交互位置(同上)   
Alt+← 前一個編輯的頁面   
Alt+→ 下一個編輯的頁面(當(dāng)然是針對上面那條來說了)   
Alt+Enter 顯示當(dāng)前選擇資源(工程,or 文件 or文件)的屬性   
Shift+Enter 在當(dāng)前行的下一行插入空行(這時鼠標(biāo)可以在當(dāng)前行的任一位置,不一定是最后)   
Shift+Ctrl+Enter 在當(dāng)前行插入空行(原理同上條)   
Ctrl+Q 定位到最后編輯的地方   
Ctrl+L 定位在某行 (對于程序超過100的人就有福音了)   
Ctrl+M 最大化當(dāng)前的Edit或View (再按則反之)   
Ctrl+/ 注釋當(dāng)前行,再按則取消注釋   
Ctrl+O 快速顯示 OutLine   
Ctrl+T 快速顯示當(dāng)前類的繼承結(jié)構(gòu)   
Ctrl+W 關(guān)閉當(dāng)前Editer   
Ctrl+K 參照選中的Word快速定位到下一個   
Ctrl+E 快速顯示當(dāng)前Editer的下拉列表(如果當(dāng)前頁面沒有顯示的用黑體表示)   
Ctrl+/(小鍵盤) 折疊當(dāng)前類中的所有代碼   
Ctrl+×(小鍵盤) 展開當(dāng)前類中的所有代碼   
Ctrl+Space 代碼助手完成一些代碼的插入(但一般和輸入法有沖突,可以修改輸入法的熱鍵,也可以暫用Alt+/來代替)   
Ctrl+Shift+E 顯示管理當(dāng)前打開的所有的View的管理器(可以選擇關(guān)閉,激活等操作)   
Ctrl+J 正向增量查找(按下Ctrl+J后,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在stutes line中顯示沒有找到了,查一個單詞時,特別實用,這個功能Idea兩年前就有了)   
Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從后往前查)   
Ctrl+Shift+F4 關(guān)閉所有打開的Editer   
Ctrl+Shift+X 把當(dāng)前選中的文本全部變味小寫   
Ctrl+Shift+Y 把當(dāng)前選中的文本全部變?yōu)樾?nbsp;  
Ctrl+Shift+F 格式化當(dāng)前代碼   
Ctrl+Shift+P 定位到對于的匹配符(譬如{}) (從前面定位后面時,光標(biāo)要在匹配符里面,后面到前面,則反之)   
   
下面的快捷鍵是重構(gòu)里面常用的,本人就自己喜歡且常用的整理一下(注:一般重構(gòu)的快捷鍵都是Alt+Shift開頭的了)   
Alt+Shift+R 重命名 (是我自己最愛用的一個了,尤其是變量和類的Rename,比手工方法能節(jié)省很多勞動力)   
Alt+Shift+M 抽取方法 (這是重構(gòu)里面最常用的方法之一了,尤其是對一大堆泥團(tuán)代碼有用)   
Alt+Shift+C 修改函數(shù)結(jié)構(gòu)(比較實用,有N個函數(shù)調(diào)用了這個方法,修改一次搞定)   
Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數(shù)字和字符串抽取成一個變量,尤其是多處調(diào)用的時候)   
Alt+Shift+F 把Class中的local變量變?yōu)閒ield變量 (比較實用的功能)   
Alt+Shift+I 合并變量(可能這樣說有點不妥Inline)   
Alt+Shift+V 移動函數(shù)和變量(不怎么常用)   
Alt+Shift+Z 重構(gòu)的后悔藥(Undo)   
   
編輯   
作用域 功能 快捷鍵   
全局 查找并替換 Ctrl+F   
文本編輯器 查找上一個 Ctrl+Shift+K   
文本編輯器 查找下一個 Ctrl+K   
全局 撤銷 Ctrl+Z   
全局 復(fù)制 Ctrl+C   
全局 恢復(fù)上一個選擇 Alt+Shift+↓   
全局 剪切 Ctrl+X   
全局 快速修正 Ctrl1+1   
全局 內(nèi)容輔助 Alt+/   
全局 全部選中 Ctrl+A   
全局 刪除 Delete   
全局 上下文信息 Alt+?   
Alt+Shift+?   
Ctrl+Shift+Space   
Java編輯器 顯示工具提示描述 F2   
Java編輯器 選擇封裝元素 Alt+Shift+↑   
Java編輯器 選擇上一個元素 Alt+Shift+←   
Java編輯器 選擇下一個元素 Alt+Shift+→   
文本編輯器 增量查找 Ctrl+J   
文本編輯器 增量逆向查找 Ctrl+Shift+J   
全局 粘貼 Ctrl+V   
全局 重做 Ctrl+Y   
   
   
查看   
作用域 功能 快捷鍵   
全局 放大 Ctrl+=   
全局 縮小 Ctrl+-   
   
   
窗口   
作用域 功能 快捷鍵   
全局 激活編輯器 F12   
全局 切換編輯器 Ctrl+Shift+W   
全局 上一個編輯器 Ctrl+Shift+F6   
全局 上一個視圖 Ctrl+Shift+F7   
全局 上一個透視圖 Ctrl+Shift+F8   
全局 下一個編輯器 Ctrl+F6   
全局 下一個視圖 Ctrl+F7   
全局 下一個透視圖 Ctrl+F8   
文本編輯器 顯示標(biāo)尺上下文菜單 Ctrl+W   
全局 顯示視圖菜單 Ctrl+F10   
全局 顯示系統(tǒng)菜單 Alt+-   
   
   
導(dǎo)航   
作用域 功能 快捷鍵   
Java編輯器 打開結(jié)構(gòu) Ctrl+F3   
全局 打開類型 Ctrl+Shift+T   
全局 打開類型層次結(jié)構(gòu) F4   
全局 打開聲明 F3   
全局 打開外部javadoc Shift+F2   
全局 打開資源 Ctrl+Shift+R   
全局 后退歷史記錄 Alt+←   
全局 前進(jìn)歷史記錄 Alt+→   
全局 上一個 Ctrl+,   
全局 下一個 Ctrl+.   
Java編輯器 顯示大綱 Ctrl+O   
全局 在層次結(jié)構(gòu)中打開類型 Ctrl+Shift+H   
全局 轉(zhuǎn)至匹配的括號 Ctrl+Shift+P   
全局 轉(zhuǎn)至上一個編輯位置 Ctrl+Q   
Java編輯器 轉(zhuǎn)至上一個成員 Ctrl+Shift+↑   
Java編輯器 轉(zhuǎn)至下一個成員 Ctrl+Shift+↓   
文本編輯器 轉(zhuǎn)至行 Ctrl+L   
   
   
搜索   
作用域 功能 快捷鍵   
全局 出現(xiàn)在文件中 Ctrl+Shift+U   
全局 打開搜索對話框 Ctrl+H   
全局 工作區(qū)中的聲明 Ctrl+G   
全局 工作區(qū)中的引用 Ctrl+Shift+G   
   
   
文本編輯   
作用域 功能 快捷鍵   
文本編輯器 改寫切換 Insert   
文本編輯器 上滾行 Ctrl+↑   
文本編輯器 下滾行 Ctrl+↓   
   
   
文件   
作用域 功能 快捷鍵   
全局 保存 Ctrl+X   
Ctrl+S   
全局 打印 Ctrl+P   
全局 關(guān)閉 Ctrl+F4   
全局 全部保存 Ctrl+Shift+S   
全局 全部關(guān)閉 Ctrl+Shift+F4   
全局 屬性 Alt+Enter   
全局 新建 Ctrl+N   
   
   
項目   
作用域 功能 快捷鍵   
全局 全部構(gòu)建 Ctrl+B   
   
   
源代碼   
作用域 功能 快捷鍵   
Java編輯器 格式化 Ctrl+Shift+F   
Java編輯器 取消注釋 Ctrl+   
Java編輯器 注釋 Ctrl+/   
Java編輯器 添加導(dǎo)入 Ctrl+Shift+M   
Java編輯器 組織導(dǎo)入 Ctrl+Shift+O   
Java編輯器 使用try/catch塊來包圍 未設(shè)置,太常用了,所以在這里列出,建議自己設(shè)置。   
也可以使用Ctrl+1自動修正。   
   
   
運行   
作用域 功能 快捷鍵   
全局 單步返回 F7   
全局 單步跳過 F6   
全局 單步跳入 F5   
全局 單步跳入選擇 Ctrl+F5   
全局 調(diào)試上次啟動 F11   
全局 繼續(xù) F8   
全局 使用過濾器單步執(zhí)行 Shift+F5   
全局 添加/去除斷點 Ctrl+Shift+B   
全局 顯示 Ctrl+D   
全局 運行上次啟動 Ctrl+F11   
全局 運行至行 Ctrl+R   
全局 執(zhí)行 Ctrl+U   
   
   
重構(gòu)   
作用域 功能 快捷鍵   
全局 撤銷重構(gòu) Alt+Shift+Z   
全局 抽取方法 Alt+Shift+M   
全局 抽取局部變量 Alt+Shift+L   
全局 內(nèi)聯(lián) Alt+Shift+I   
全局 移動 Alt+Shift+V   
全局 重命名 Alt+Shift+R   
全局 重做 Alt+Shift+Y   

下一篇:第三十四講:Android Timer計時器
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2024-12-29 09:35 , Processed in 0.066513 second(s), 13 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表