處理bugs心法

?

1.?前提

第一層:遇到異常首先必須告訴自己,冷靜,不要慌。(一看到Bug就心慌,那么武功就施展不了了)

2.?入門級

第二層:遇到Bug,第一潛意識看輸出異常的信息的(控制臺輸出,Junit輸出,頁面輸出),優先將異常輸出在控制臺。

?

建議:遇到JUnit異常輸出,最好轉成控制臺輸出。

如:一下異常如果在Junit查看,不好發現為,只知道是數據庫出錯了。轉成為控制臺異常立刻就看到是缺少了一個字段。

?

?

控制臺的異常更加直觀

?

?

?

?

?

?

第三層:查看異常的第一個關注點:異常的名字,通過異常名字大概可以給異常分類。

如:根據這個異常的名字就知道,異常出現在數據庫操作。

?

?

?

第四層:查看異常的第二個關注點:異常的信息,很多異常的信息已經說明了異常的問題(30%

?

如:該異常,明眼的同學立刻就知道數據庫操作不成功,問題出在配置少了一個字段。

?

?

?

3.?應用級

第五層:以上操作不能解決,查看異常的第三個關注點:在異常中尋找是否有自己寫的類定位異常出錯的位置。

如下圖:明顯告訴為,是DataSourceTest.java:23就是該類的23行出錯了。可以點進去

?

?

--點擊進去,設置斷點

?

?

?

第六層:在該出錯的位置System.out.print()輸出數據,分析數據(可選,如果會斷點跳過該步)

?

第七層:在該出錯的位置,設置調試斷點,根據單步調試,分析斷點輸出的數據。使用watch操作獲得重點關注的數據。(80%

注意:該步驟,包括在瀏覽器調試js代碼的流程。

重點:

1)找的異常的代碼位置(通過在異常信息里面找到自己的報錯位置!!)

2)理解異常和數據的關系(難點)

4.?高手級

第八層:有些問題,出錯是無法設置斷點的,啟動程序就出錯了。而且這種問題,經常這種異常就沒有自己寫的類,斷點調試的功力就被廢了。遇到這種問題,第一意識要想到,這些問題不是Java代碼的出錯,出現這種問題的原因:開發環境出錯,JSP頁面出錯,配置文件、配置類出錯

?

1)如何判斷是開發環境出錯:看看項目有沒有錯誤警告。

?

?

?

2)如何判斷是否是頁面出錯:查看頁面異常信息和控制臺

通常頁面出錯,異常會告訴你,哪個頁面出錯。這是很重要的信息。

接著的問題只能根據信息提示解決了

?

?

?

3)如何判斷是配置文件出錯:查看控制臺信息,有時控制臺找不到想要的。可以通過設置入口斷點的方式。

如:在配置struts.xml配置是否出錯,在Action的方法入口處設置一個斷點。如果都沒有執行代碼邏輯就出錯了,那么可以判斷,就是web.xml獲得strust.xml配置錯了,不可能是代碼出錯。

?

注意:

分析配置文件異常時:

如果網站連啟動都啟動不了的,重點關注web.xml

如果網站可以啟動的關注非web.xml的配置文件 (90%

5.?骨灰級

第九層:隔離法(99%

在作為以上所有操作,都無法找到異常的原因,可以使用隔離法。可以分為代碼隔離和業務隔離

?

1)代碼隔離法

同一個程序中,根據異常的范圍,停止與異常無關的代碼模塊的執行,并且在代碼執行的流程的各處設置輔助斷點跟蹤。

?

demo。對原理不太熟悉的代碼。!!!!

?

(2)業務隔離法

分布式開發中,一個系統有多個子系統組成。往往一個業務的實現要調用N個子系統的接口。經常會出現,開發時功能是好的。上線時就出錯問題。遇到這種問題,在前八層的功力都無法分析時,那么就要將各個業務系統隔離分析了。

?

?

?

代碼隔離經常用于

(1)沒有輸出有效異常信息的異常。

(2)出現的異常不是固定的,有時可以有時不可以。

?

?

?

6.?神級

第十層:根據多年積累的經驗。使用直覺,可以立刻定位絕大大部分問題,不需要任何招數。在直接判斷不了再使用以上的方法拆招。

?

?

轉載于:https://www.cnblogs.com/aknife/p/11145497.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448464.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448464.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448464.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言實現簡單的電子通訊錄2

這兩天學完系統調用和標準IO,之前的通訊錄可以進行一些改進,將數據保存到文件中(圖我這里就不發了)。 原理:每次啟動程序時先從預設文件中以只讀的形式讀取保存的通訊錄信息,然后將讀取到的信息導入到結構體中;每次執…

解決 VS Code 保存時候自動格式化

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 不知道從哪個版本起,VS code 保存會自動格式化。 以前都是altshiftF格式化的,現在一保存就格式化,而…

發布在線文檔【軟件=業務+架構+流程+組織.pptx】

10年的技術工作,軟件這個詞對我來說一點都不陌生,但是當我問自己如何理解軟件的?我卻不知道如何回答。軟件=業務+架構+流程+組織,其中公式是借用軟件產品線工程BAPO的概念&#xff0…

12種食物最養男人 10種食物最養女人 太值得收藏了

據統計,男性10大死因中有4項與飲食有關,包括癌癥、腦血管疾病、心臟病和糖尿病。以下12種食品對男性健康有益,建議男性多多攝取。 男人需要的十種養生食物 No.1西紅柿 西紅柿的酸味能促進胃液分泌,幫助消化蛋白質等&#xff…

ES 基礎

1. ES 基礎一網打盡 1.1 ES定義 ESelaticsearch簡寫, Elasticsearch是一個開源的高擴展的分布式全文檢索引擎,它可以近乎實時的存儲、檢索數據;本身擴展性很好,可以擴展到上百臺服務器,處理PB級別的數據。 Elasticsear…

為什么 那么多 前端開發者都想學 Vue.js

根據JavaScript 2017 前端庫狀況調查 Vue.js是開發者最想學的前端庫。我在這里說明一下我為什么認為這也是和你一起通過使用 Vue 構建一個簡單的 App 應用程序的原因。 我最近曾與 Evan You,Chris Fritz,Sarah Drasner,和 Adam Jahr 做了一個…

進程間通信之管道通信

兩個程序之間傳遞數據的一種簡單方法是使用popen和pclose。 #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream); popen函數允許一個程序將另一個程序作為新進程來啟動&#xff0c;并可以傳遞數據給它或者通過它接收數據…

vue 各組件 使用 Demo

環境搭建 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 假設你已經通讀vue官方文檔&#xff08;文檔都沒讀一遍&#xff08;至少&#xff09;&#xff0c;那不建議動手擼碼&#xff…

Dropbox推獨立應用,公司估值已達100億美元

摘要&#xff1a;Dropbox剛獲得5億美元的新一輪融資&#xff0c;其估值已高達100億美元&#xff0c;現在又推出針對云服務的獨立應用Carousel&#xff0c;不久之后&#xff0c;還會有應用陸續推出&#xff0c;隨著美國前國務卿賴斯的加盟&#xff0c;Dropbox在云市場的表現異常…

SQL經典面試題(二)

有3個表S&#xff0c;C&#xff0c;SCS&#xff08;SNO&#xff0c;SNAME&#xff09;代表&#xff08;學號&#xff0c;姓名&#xff09; //主鍵&#xff1a;SNO //多個人&#xff0c;多門課 3張表 &#xff0c;SC 關系表C&#xff08;CNO&#xff0c;CNAME&#xff0c;…

進程間通信之信號he信號量

信號的篇幅較少&#xff0c;就把他和信號量放在一起了。先講講他們之間的區別&#xff1a; 1.信號&#xff1a;&#xff08;signal&#xff09;是一種處理異步事件的方式。信號時比較復雜的通信方式&#xff0c;用于通知接受進程有某種事件發生&#xff0c;除了用于進程外&…

開源當自強:我們不是“便宜貨”

之前人們爭相使用開源軟件&#xff0c;無非是因為它便宜、好用、易得&#xff0c;不過根據最新的開源軟件調查顯示&#xff0c;人們使用開源軟件最主要的原因還是看重它的高質量。 成本低是很過公司參與開源項目的最主要原因之一&#xff0c;而現在他們視開源是一條通往創新、省…

前端學習:Vue.js基本使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Vue教程文檔&#xff1a; https://cn.vuejs.org/v2/guide/ 定義 實例&#xff1a; new Vue() 掛載點: el 數據&#xff1a;data 模…

PWE

Obstacle Override Logic The obstacle override logic provides the possibility to override obstacle within a window movement by selective switching off the anti-trap functionality.轉載于:https://www.cnblogs.com/dannykong/p/11151813.html

進程間通信之消息隊列

一、什么是消息隊列 unix早期通信機制之一的信號能夠傳送的信息量有限&#xff0c;管道則只能傳送無格式的字節流&#xff0c;這無疑會給應用程序開發帶來不便。消息隊列&#xff08;也叫做報文隊列&#xff09;則克服了這些缺點。 消息隊列就是一個消息的鏈表。可以把消息看…

“ 愿我如星君如月,夜夜流光相皎潔 ...”

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 永遠相信愛情 ... 從一而終 ... --------------------------------------------------------------------------- 后記&#xff1a;2…

python內建函數和工廠函數的整理

內建函數參閱&#xff1a; https://www.cnblogs.com/pyyu/p/6702896.html 工廠函數&#xff1a; 本篇博文比較粗糙&#xff0c;后續會深入整理轉載于:https://www.cnblogs.com/qiang-upc/p/11155786.html

顯卡天梯圖:2014最新顯卡性能天梯圖

隨著電腦游戲的推廣&#xff0c;很多用戶都喜歡上了電腦網絡游戲&#xff0c;所以組裝電腦用戶在裝機的時候&#xff0c;會考慮電腦配置的游戲性能&#xff0c;要提高電腦配置游戲性能首要條件就是顯卡性能要強&#xff0c;如果顯卡性能不佳&#xff0c;那么其它方面性能再強&a…

進程間通信之分別用共享內存和信號量實現賣票

利用共享內存實現的賣票系統&#xff1a; 利用flag來保證同一時間只有一個程序使用內存&#xff0c;使用結束還原。 #include <stdio.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/types.h> #include <string.h> #include <…

shiro 的 @RequiresPermissions 注解使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 權限控制是shiro最核心的東西 Shiro權限聲明通常是使用以冒號分隔的表達式。一個權限表達式可以清晰的指定資源類型&#xff0c;允許的…