導航:首頁 > 程序命令 > 程序員遇到bug邊搜邊學

程序員遇到bug邊搜邊學

發布時間:2024-05-09 17:35:12

程序員遇到解決不了的bug怎麼辦

java程序員 剛進公司 項目經理分配給的bug 怎麼樣去著手改

首先,看看主要的開發文檔。
第二,請教經理大概講解些平台整體結構,
第三,請教同事幫你講解一些怎樣快速的尋找或定位到那個類和那個頁面的方法。因為是他們開發的,所以他們熟識。最好讓他給我演示一二回如何尋找頁面和類。
第四。修改時多用一些輸出語句,在JAVA用System.out.println()
在JS里有alert();在JSP頁面用out.println()等。
第五。記得多問,切記,這是成長的途徑,最適合新手了。

㈢ 優秀的程序員是如何處理技術 Bug 的

從初入職場菜鳥到職場大咖,很多程序員在努力充實自己,有時候我們需要對自己進行一次能力定位,了解自己的優勢和沒有掌握的技術。芯學苑列出幾點作為初入職場的新手評估自己,明了前進學習的方向。
1、技術能力(解決問題的能力)
這是非常重要的事;過硬的技術能讓你得到面試機會,並在工作中游刃有餘。當公司招聘一個Java開發人員時,是會優先考慮能力因素的。在實際的項目開發中,一個程序員的技術能力等於其解決問題的能力。
如果拿一個尺度來衡量這個能力的話,一個程序員的能力可以用能完成任務的數量和難度來衡量。一個程序員能基本無誤的完成項目中的一個功能算是合格,但在此之前,他對項目的生產力為負,為他布置的任務,中間環節的溝通,修補bug的時間其實要多於自己直接完成該功能的時間的。能較好完成一個完整模塊的程序員才算是較好的程序員,也是項目中的主要開發者。能獨立完成整個項目才是優秀的程序員。
2、專業基礎(知識的積累)
一個程序員的知識積累很大程度上決定了其解決問題的能力。知道如何編寫代碼是基本的技能,但是知道Java編程語言的原理,知道代碼背後的演算法將使你從人群中脫穎而出。
3、主流編程工具
今天,事實是,你不能成為一個樣樣都懂的人(雜而不精)。你必須選擇你要掌握的工具。有時這是由工作的環境決定的,但是按照下面說的去做也是一個很好的選擇:
構建工具:Maven或Gradle。
SCM:Git(不是GitHub。大不相同)。
構建自動化:Jenkins。
IDE:Netbeans或Eclipse——不僅用於編寫代碼,而且還從IDE中重構和調試代碼。我遇到了很多沒有如何從他們最喜歡的IDE調試的開發人員。
Bug跟蹤:Bugzilla或Jira。
4、JSF的知識
應用程序伺服器
所有Java開發人員應該知道如何在Apache Tomcat中部署。
當Glassfish開發停止時,下一個最好的事情是J Boss Wild Fly。
5、溝通的能力
溝通是我們做好一切事情的關鍵。我們必須與我們周圍的環境保持互動,無論是在我們的私人還是職業生活中。一個良好的程序員知道如何在各種團體面表達自己。也許對你來說顯而易見的東西在他人的角度來看並非如此。
從大的尺度(比如一個人的工作生涯)來看,一個程序員知識積累的多少只決定於其自學能力和他對編程本身的興趣。
在一個分工明確的項目中,程序員需要理解產品,和領導溝通理解自己的任務,和同事們溝通以正確的方式進行合作。無論哪一個方面溝通出了問題都不是小事情,同時,程序員還需要正確的傳達設計的實現難度,以及讓別人正確的理解自己設計模塊的介面。在不寫文檔時,正確的口頭溝通非常重要,需要寫文檔時,良好的編輯能力也算做是溝通能力的一部分。
6、自學能力
這是一個非常重要的技能,在你自己的空閑時間學習新的技能。不要等待公司為你提供培訓。你需要自己去學習新技術,提升自己在相關領域的水平。從Java後端開發到架構模式,總是有一些新事物值得學習。經常閱讀博客和論壇,嘗試加入本地聚會小組。你學到的東西可以幫助你的事業。知識刷新頻率極快讓人無法追趕的這個時代,難免會有超出自己知識范圍的時候,此時你的自學能力決定了你能多快的完成任務。
7、良好的團隊合作精神
無論是部分編程還是大型項目,所有開發人員都是作為團隊的一部分在協同工作。你需要致力於團隊的目的,或幫助新的團隊成員克服障礙。不要存在這種「我只要做好我的本職工作,下班就直接回家」的態度。成為團隊的一部分,幫助周圍的同事,對自己的能力也是不小的提升。
就像拿破崙說的不想當元帥的士兵不是好士兵,追求參與一個大型軟體系統的開發,是每個程序員的夢想。在此之前,應該學習更多的專業知識,達到優秀程序師的標准。最後希望各位程序員閱讀本文後能夠得到一些裨益,在這條路上走得更好。

㈣ 我是it程序員,剛進公司讓我調試bug但是總是調不好很是郁悶,我該怎麼辦是不是有很多人都有這樣的困惑

一般代碼不是很多,可以一步一步跟蹤,這樣在找Bug的過程也學習到人家撰寫的編碼的知識;如果很長又沒耐心去看,你就根據報異常的信息去瞭解,哪裏有錯了,打個斷點,F5調到那個斷點,如果能跑到那個斷點,就說明前面沒問題,如果沒跑到那個斷點,就說明前面有異常,要在重新調整。其實就是要會拆分找問題。
做IT,沒熬得住寂寞,謹慎仔細,品質如何保證呢。

python調試程序BUG的心得技巧分享

【導讀】相信各位Python工程師們在寫Python代碼的時候,免不了經常會出現bug滿天飛這種情況,這個時候我們可能就得一個標點一個標點的去排查,費時又費力,但是,我們又很難發現到底是其中的哪一個步驟,導致了這些問題的出現。導致這些問題的其中一個原因,就是我們沒有養成良好的編程習慣。編程習慣就好比是電影中的特效。電影特效越好,呈現出來的觀影效果也自然越好。同樣,如果我們能夠養成好的編程習慣,在查找錯誤的時候,自己的思路就會更加清晰。下面是小編整理的解決Python項目bug的心得技巧分享,包含六小點,希望對大家有所幫助。

方法一:使用項目管理工具

無論Python項目簡單與否,我們都應該使用Git進行版本控制。大部分支持Python的IDE(集成開發環境)都內置了對Git這一類項目管理工具的支持。

我們在修改代碼時,常常會出現改著改著程序就崩了的情況,改出的最新版本有時候還不如上一個版本。而Git,恰好能夠及時幫我們保存之前的版本。使用了它以後,我們也不需要不停地用「ctrl+z」來撤回代碼了。

方法二:使用Python的內置函數

Python的內置函數和標准庫都可以處理常見的用例,而不需要自己重新定義函數。

但是,剛剛入門的Python開發人員們對其中的函數並不熟悉。所以他們經常會遇到這樣一個問題——在不需要記住內容的情況下,如何才能知道標准庫中的內容是否涵蓋了自己的用例?最簡單的方法是將標准庫索引和內置函數概述頁添加為書簽,並且在遇到「日常編程」類問題的時候立即瀏覽一下。我們使用這些函數的頻率高了,自然也就能記住這些函數了。

方法三:使用正確的模塊

與內置函數和標准庫一樣,Python中大量的第三方模塊集合,也可以幫助我們節省大量的人力。通過PyPI的Web前端,可以針對我們的問題觸發搜索詞,我們很容易就能找到適合自己的解決方案。

方法四:使用OOP

面向對象編程(OOP)將數據結構與用於操作它們的方法捆綁在一起,從而使編寫高級代碼更加容易。OOP非常適合用於Python這一類高級語言,尤其是項目非常復雜的時候。熟悉Python的開發人員都知道,使用OOP可以減少代碼量,從而節省大量的時間。

但是,也不是所有的項目都需要使用OOP。如果項目沒有特別要求,一些小型的項目就可以不用OOP。

方法五:編寫測試代碼並不斷測試

一個好的程序員一定知道測試之於項目的重要性。編寫測試代碼的確是一個很枯燥的過程,但是不進行測試,我們就無法發現程序的問題所在。

如果一個項目非常復雜的話,我們就必須要做到及時測試。越早測試,就能越早發現問題。而不是說等代碼全部寫完了,才開始進行測試,這樣反而會導致更多的錯誤和更大的工作量。

當然,我們也可以尋找專業的軟體測試人員,來幫助我們進行測試。這樣我們也可以把更多的精力投入到項目程序本身。

方法六:選擇正確的Python版本

部分人仍然在使用Python2,但Python官方的開發團隊早已經不對這一版本進行維護了。聰明的開發人員都已經將Python2里的項目遷移到Python3中了。

Python目前的最新版本是Python3.8.5,但也不是說你一定要使用最新版本。專業的軟體開發人員都知道,任何軟體的最新版本都不一定是最好的,因為它仍需要開發團隊不斷地去改良。程序員一般都會使用在最新版本之前的一個版本,舊版本相對而言是比較成熟的。

無論是運用哪一種語言編寫代碼,優秀的程序員都具備良好的編程習慣。這些習慣不僅能夠讓我們思路更加清晰,也可以幫助我們減輕工作量,從而節省大量的時間。所以,可能你離優秀的程序員,只差一個好習慣了哦~

以上就是小編今天給大家整理發送的關於「解決Python項目BUG的心得技巧分享」的相關內容,希望對大家有所幫助。小編認為要想在大數據行業有所建樹,需要考取部分含金量高的數據分析師證書,這樣更有核心競爭力與競爭資本。

㈥ 面試中被問到你遇到的java編程中的bug你如何解決的

首先,要認識 bug。
如果一個程序做了它不應該做的事,或者沒有做它應該做的事,那就是 bug。bug 很難避免,尤其在規模化的編程過程中。
我們知道從面向過程的角度來說,一個程序是由數據結構和演算法構成的,從面向對象的角度來說,程序可以是由類和對象組成的。因此 bug 我這里分成兩類:

在一個 Java 程序中,類和對象的關系可能會造成 bug。這是設計時的問題,例如多實例的同步問題、線程沖突和死鎖問題,這是常見的兩個潛在的 bug。要盡量避免這類 bug,只能在設計時下功夫。思路一定要清晰,一定要清楚每個類要做些什麼,什麼時候該做些什麼。這類 bug 比較容易發現,但是不易修補,因為牽扯到程序的不同部分,有時候相當麻煩,因此最好一開始就不要讓它出現。

然後一些細節上的 bug,屬於邏輯漏洞,可能是演算法上的漏洞。Java 其實這方面要比 C/C++ 安全,因為後者的某些漏洞是致命的,例如內存泄露、指針沖突、野指針等一系列問題,可能直接導致程序崩潰,但是 Java 絕對不會出現指針問題,內存相對安全。但是 Java 也可能導致內存不斷消耗,最終崩潰的情況也是有的。這個問題我也碰到過幾次了,如何解決?需要你對你大量使用的類非常熟悉,最好事先仔細看看文檔,有的類需要你最後 dispose 的,有的類 add 過後需要 remove 的,有的類的某些方法會間接地創造一些對象。這種 bug 不大容易發現,尤其是我們有時候對 JVM 的絕對信任而忽略了這些細節,甚至造成了不好的習慣。要麼不礙事,要麼很嚴重,一但出現問題可能會發現同樣的問題幾乎出現在所有的地方。所以避免這類 bug 只有謹慎,並且要養長良好的習慣。
順便說一句,Java 內存溢出後程序就直接退出,可能會導致數據丟失之類的,這個責任擔當不起的。
然後邏輯漏洞還沒講完,還有一些和內存無關,但是也是邏輯上的疏忽造成的,例如數組越界、空棧、格式不兼容等等。這些相當難發現,有時候是正常的,有時候就報錯了。這個可以說是最普遍的漏洞,也是最難發現的漏洞。這類漏洞要看程序員的水平,經驗豐富、思維清晰、反應敏捷、習慣良好的程序員會好一點,但是不是所有的程序員都是這樣的,再說人無完人,再怎麼水平高也難免犯點小錯嘛。這種漏洞基本都是在後期測試(傳說中的內測)和已發布的測試版中逐漸被發現。為了盡量早發現,內部的測試要做的好,不過首先負責各個部分的程序員之間要定下默契,程序要符合規范,類和方法盡量簡單化,不要一個方法出現 4 個以上的參數,因為那樣會巨大的增加測試的麻煩。要寫好注釋,變數名寫完整,等等規范就不一一列舉了。然後對測試人員的要求也是比較高的,測試人員必須熟練掌握測試技巧,有的團隊這些小 bug 的修復也是測試人員做的,那測試人員也要良好掌握調試技巧,團隊內人員要保持良好的溝通。

㈦ 互聯網前輩總是說「bug是改不完的」,新入職的程序員該怎樣應對bug

互聯網前輩總是說“bug是改不完的”,新入職的程序員應對bug:

㈧ 程序員遇到百度不出來的bug都是怎麼解決的

筆者不同意下面網友的回答。程序員如果解決bug的水平停留在網路,那麼本質上只是一個「面向搜索引擎的代碼搬運工」,是不合格的程序員。

程序員對面bug,正確的「打開方式」是像福爾摩斯和柯南那樣,尋找線索、運用邏輯推理來縮小問題可能的根因范圍,最終精準定位。

常用的方法有:

1. 壞境上下文變換法

2. 工具調試法

3. 版本回溯對比法

4. 代碼審計法

……

沒有編程問題是stack overflow和Google解決不了的,假設你在編程中遇到了問題,你自己解決不了、你周圍的的人都解決不了的時候,我覺得stack overflow、Google是你最好、也是最後的幫手。

作為一個程序員,我覺得Google、stack overflow是你必須要學會使用的兩個工具,這兩個工具本身並沒有使用門檻,只不過因為一些眾所周知的原因,很多人不能使用Google和stack overflow這兩款工具。

Google主要還是方便,而且很多編程問題都需要用到英文搜索,當然現在網路在專業能力上也提升明顯,不過跟Google也還是有比較大的差距,因此我還是強烈建議要學會使用Google,這會幫你在工作、學習上事半功倍。假設Google確實因為某些原因沒辦法很好的使用,我也建議你至少要會使用Bing搜索。

現在可以說stack overflow上沒有你找不到的問題了,從IDE環境安裝問題,到各類編程語言問題。演算法問題,數據結構問題,調試,重構等等,幾乎這里就沒有你找不到的答案,可以說在stack overflow上你可以找到任何解決方案,並且上面的回答者基本上都是非常有經驗,而且都是實際中遇到的問題分享出來的,這個工具一定要會使用。同理,除了stack overflow這個專業的垂直程序員問答社區,你也可以使用Quora這個綜合問答社區,這上面也能找到很多問題的答案。

一些比較優秀的文本編輯器: Emacs/Vim,Visual Studio Code,Sublime Text,Atom,Ultraedit,Hbuilder等。

一些比較非常出色的IDE集成開發環境: visual studio,IntelliJ IDEA,PhpStorm,Haskell for Mac ,eclipse,WebStorm,GoLand,CLion,Android Studio,Xcode,QT等。

macOS平台比較好的第三方包管理工具: Fink,Macports,Homebrew等。

一些比較好的終端工具: Zoc7,iTerm2,Cmder,terminus,hyper等。

一些比較好的筆記軟體、markdown工具、效率工具: Evernote,有道雲筆記,為知筆記,Ulysses,MWeb,FileZilla,Snipaste,Kantu等。

虛擬機軟體、容器軟體: Parallels Desktop,VMWare Fusion,Virtual Box,Docker等。

我是個程序員,職務是linux底層驅動工程師。平時的主要工作是調試驅動,但產品遇到諸如死機、重啟、不開機之類的問題時,也要參與查找原因。一部分問題,確實可以查看相關的log,然後網路這些log的關鍵字來解決;但更多的問題,牽扯的條件太多,並不是簡單的網路就能解決的。

觀察了周圍同事們的做法,我總結出以下幾種解決方法:

網路因為競價排名的原因,搜索出來的結果有很多廣告的成分,所以有時候要翻好幾頁才能看到一條相關的答案,有些甚至要翻幾十頁。

因為網路搜索使用的是SEO技術,即普通用戶可以通過優化網站內容來提升關鍵詞排名。

而這就會導致一個問題:你搜索關鍵詞後展現出來的結果是有人想要讓你看到的,並不是質量最好的。

也就是說,網路搜索結果被人為干預了。所以網路一直被網民所詬病。

但網路搜索不出結果,未必是網路的原因,也有可能是自己輸入的搜索詞不準確造成的。所以對於網路,我們要做到如下幾點:

除此之外,網路搜索還有點小技巧,粥左羅《萬字干貨,徹底講透搜索技巧,10倍提升你的搜索力(免費教程)》這篇文章寫得非常好,我整理幾點,僅供參考:

01 過濾目標內容

命令:「+」「-」

用法:通過「+」和「-」來對搜索結果進行過濾

比如在關鍵詞後加上「-推廣 -推廣鏈接」就可以排除搜索結果中包含相應字樣的鏈接。如果你發現廣告還沒有排除干凈,你也可以再加上「-廣告」通常就能徹底的消滅廣告。

02 搜索包含某關鍵詞的內容

命令:「intitle」

用法:通過「intitle」命令指定搜索結果中要包含的關鍵詞,注意「intitle」後邊連接的冒號是英文狀態下的。

03 搜索某一個格式的文件

命令:「filetype」

用法:通過「filetype」命令可以限制我們要搜索文件的類型,注意「filetype」後邊接的冒號也是英文狀態下的。

04 搜索特定時間范圍的內容

命令:「時間..時間」

用法:通過「時間..時間」命令可以限制我們要搜索的文件的時間,注意兩個時間的中間頓號沒有空格。

相對網路,谷歌、必應對於技術搜索,就相對准確許多,所以當你網路搜索不到時,嘗試下別的搜索引擎,說不定會有新發現。

現在程序員使用的機器語言,都是國外的,更准確的說,都是美國的。所以很多論壇、資料等,都是英文。如果你只會用中文來搜索,某些小眾的問題,當然搜不到啦。

所以,要學會使用英文關鍵字來搜索。

有時候甚至要去國外的一些論壇來搜索想要的答案,這就要求要有一定的英語閱讀能力,不能一看到英文帖就放棄。

有時候不管你如何搜索,都找不到自己想要的答案,該怎麼辦呢?這種情況下,就只能硬著頭皮嘗試自己解決了。

或者,尋求同事或朋友的幫助,尋求大腦風暴,說不定就會有思路。

如果有些問題是因為新器件帶來的,還可以找到器件供應商,讓他們安排技術支持幫忙查找原因。

除此之外,還可以把問題整理好,寫清發生的條件、復現步驟、測試方法、相關的LOG截圖等資料,去一些技術論壇發求助帖,尋找大牛的幫助。

做技術時間久了,發現有些問題確實無解,根本沒有辦法去解決它。

這時候,我一般會嘗試把它繞過,就是說,想辦法讓它無法復現,雖然問題還是存在,但是能把它掩蓋過去。

比如有些驅動在開機啟動時會載入不正常,那麼就讓它晚點啟動,或者手動載入。這也不失為一種解決問題的方法。

以上就是我的建立,希望對你有幫助。

首先作為一個程序員,一個優秀的程序員最最最重要的能力就是解決問題的能力。這里解決問題的能力當然就包含了解決 bug 能力了

畢竟,程序員這一生,可能會寫無數個 bug ,沒有說哪個程序員敢保證自己寫的程序沒有 bug 。 所以,寫了 bug ,遇到 bug 並不可怕,可怕的是你沒有解決 bug 的能力 。

作為一個程序員,解決 bug 的途徑有哪些呢?我們來一起聊一聊!

其實,每個程序員在學習編程的時候,都會使用編程工具,而現在的開發工具,其實功能都很強大。如果你自己合理利用編程工具,都了解和懂得開發工具的一些技巧,其實不僅僅能夠提高開發效率,而且還能夠幫助你解決很多編程中的實際問題。

debug 調試,大部分你常用的開發工具,都會有調試模式的,簡而言之,就是你編程的時候,遇到了不是自己所想的結果的時候,你可以使用 debug 模式,來一步一步的調試,在調試模式下一般每一步都會顯示所執行的結果,你可以看看在哪一步出錯了,執行的結果與你預想的結果不對,那麼你就能夠找到問題所在了。

還有就是,開發工具的控制台,都會提示出報錯信息的,現在的開發工具,都會直接告訴你哪一行,報了什麼錯。其實,很容易定位到錯誤的。你只需要在編程的過程中積累經驗,知道報什麼錯,用什麼方法來解決就行啦。

可是,提示的報錯信息,我不知道用什麼方法來解決的時候,該怎麼辦呢?這就是你需要積累的,也是問題中所描述的,就是通過搜索引擎來找答案。

不對,這里不應該是合理使用搜索引擎,應該是學會正確使用搜索引擎。比如:網路,你就不要用了,搜出一堆重復的信息,而且廣告也多。作為程序員,建議你使用谷歌搜索。

其實,你在編程中所遇到的幾乎所有的問題和 bug ,別人也同樣遇到過,因為不管是經驗豐富的老程序員,他技術再牛逼,也是初學者過來的,也都踩過你踩的坑。所以,互聯網是個好地方,裡麵包含了你想要的問題的答案。

你只要把報錯信息往搜索引擎上一放,回車一下,很多關於這個 bug 的答案就出來很多,你只需要找到跟你一樣的 bug ,就能找到答案了。

在這里必須提一下這個網站,所有的程序員有必要學會使用這個網站,其實,你編程中所遇到的問題,這個網站上幾乎都是由解答的。

Stack Overflow 可以說是最好的軟體程序類問答網站了,給軟體開發人員工作和學習提供了非常大的便利,以至於像小白,離了 Stack Overflow 簡直都不會寫程序了。

所以,建議大家一定要學會使用這個網站,對你編程肯定會有非常大的幫助的。

通過上面的方法,幾乎應該能夠解決到你所遇到的問題,但是,實在找不到答案的話,你可以問經驗比你豐富的老程序員,實在解決不了,那就換種方法吧!

網路,谷歌,debug,斷點調試,業務上的bug就需要問下同事或者產品。如果能知道大致范圍,哪一部分錯了,就換一種方法唄,一般都不會只有一種方法。

1.reload

2.restart

3.rewrite and then goto 2 or 4

4.reboot

5.rm -rf /

6.原諒我編不下去了[捂臉][捂臉][捂臉][捂臉][捂臉][捂臉][捂臉]

找bug跟醫生看病的思路是一樣的,要對症下葯。得先把問題的根源找到,找到根源以後問題就容易處理了。搜索引擎找不到的問題,說明這個問題不是一個常見的問題,具有獨特性,那麼從bug出現的路徑上一步一步去排查。必要時可以用排除法,盡可能的縮小排查范圍。另外,當軟體的業務邏輯比較繁多復雜的時候,一個結構清晰的架構能為你節省不少找bug的時間。還有,充分的單元測試能夠幫你減少出bug的機會。以上均為個人看法,歡迎討論!

一般程序員能碰到的bug無外乎其他上遊程序員寫庫時手抖留下些不匹配或者容易溢出的問題,搜一下差不多能解決問題。如果是自己寫的,那無非就是時序錯誤類型錯誤之類的,用break point一行行的調就好了。

再復雜點的bug就是程序員拿高薪的根本了,只可意會,不可言傳~

僅僅靠搜索引擎、其他網站那必然無法解決大量問題,因為很多問題是跟業務邏輯相關的,是沒有直接答案的。比如 游戲 開發有個界面一直無法顯示,這個問題就不是網路可以解決的。問題需要調試分析,這和破案非常像,但在開發過程中更有利的是問題有機會可以重現。破案是逆向工程,需要反推。解決代碼問題不僅僅可以反推,也可以通過閱讀代碼正向分析。下面說說如何debug一個業務邏輯問題。回到剛剛的例子,有個界面一直出不來,我們如何快速去定位:

1.思考這個問題發生的可能性。比如 游戲 內大量界面都是正常的,那麼可以對比正常界面代碼和異常界面代碼的區別,這是對比法。

2.假設創建正常界面和這個異常界面的邏輯代碼是一樣的,那麼問題就落到了這兩個界面內部,繼續在內部重復上面的對比法進行判斷,直到鎖定最終位置。

上面說的方法基本上可以杜絕卡在一個簡單問題上,這是擺脫新手的一個過程。選擇使用對比法或者其他方法的前提都是基於觀察和對項目的認識,所以,搜集「案發現場」是最關鍵的。

其他的問題,不屬於邏輯的,像其他網友說的那樣,有些通過到github、stackoverflow等地方解決的。這些問題也不是直接就去查找的,它通常也有個分析過程。比如你使用了一個庫,但是目前它不支持你的模塊。對於新手,就是直接網路或者google了。實際上這樣的問題也是有「案發現場」的。對於作者提供的api介面的統一性和便捷程度去推斷作者在相關支持模塊的位置以及命名以及拓展,再嘗試在文件夾中搜索。如果都找不到,再去Google上獲取更多的信息。重復推斷、分析,決定如何拓展或者繞過。

綜合上面的幾種問題,可以看到的是都離不開對現場的觀察和推理分析。這種能力也被稱為經驗。但是一般情況下你看不到它們這個分析過程,你能做的就是在實際環境中反復逼迫自己去思考,去訓練。這個推理的培養,不僅僅是對事情,也是對人。

我在入行 游戲 開發的前期,也是類似的情況。卡在不同種類的問題上,有些在簡單邏輯,有些在別人的代碼支持上。後面解決的問題多了,就會發現裡面共通的思維方式。常用的一些方法如下:

1.對比法,比較正常與異常代碼區別

2.二分查找法。分段注釋找問題,也會用在很多方面。比如最近版本突然出了一個奇怪bug,可以通過svn還原來定位。這個還原不是一個一個版本還原,而是用二分法去還原。

3.增加信息。在懷疑的位置或者過程添加日誌或者打斷點輔助自己更好的推理。

4.相似推理。比如一個引擎在api、性能使用程度上都非常友好,那麼它在別的地方也有可能相對表現比較好。這時候如果有個功能我們的實現需要很復雜才能完成,那麼就有可能是我們用錯了。相似推理不一定都能正確,但會提供一些幫助。

以上。

閱讀全文

與程序員遇到bug邊搜邊學相關的資料

熱點內容
伺服器怎麼添加連接 瀏覽:15
排列組合a演算法 瀏覽:981
伺服器迷你號是什麼 瀏覽:776
有什麼免費的雲伺服器地址 瀏覽:575
微信為什麼總是連接伺服器失敗 瀏覽:640
伯里曼手pdf 瀏覽:769
從程序員轉行做機械 瀏覽:532
加密密碼鎖多少錢 瀏覽:608
電腦主機域名和伺服器怎麼綁定 瀏覽:705
python數據單位統一減小 瀏覽:325
ftp伺服器架設linux 瀏覽:316
生成直線演算法中最快的 瀏覽:688
頭頂加密小妙招 瀏覽:59
三星qx2是什麼安卓系統 瀏覽:206
保鮮膜解壓球教學視頻 瀏覽:601
多媒體演算法工程師camera 瀏覽:988
電腦下載的歌可以拉到文件夾嗎 瀏覽:723
千鋒3g學院android 瀏覽:446
linux中的yum命令 瀏覽:240
壓縮面膜有幾種 瀏覽:577