日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用 BUG 解决方法

發(fā)布時間:2024/10/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用 BUG 解决方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

扯淡

??隨著工作時間越來越長,對于代碼的理解也越來越多!關注重點也漸漸地從代碼本身轉移到了代碼結構性、解決問題方法性等方面。下面就來說一說,在遇到代碼BUG,我們常用的一些方法!

二分定位法

??通常來說,無論BUG因此多深,通過二分定位法基本可以確定問題所在!那么什么是二分定位法?就是在程序關鍵點(可能的出錯點)進行分割,看看還會不會出問題,類似二分查找的方法,逐步縮小問題范圍。
??二分定位法適用于絕大所數(shù)問題環(huán)境。對二分定位法作進一步擴展延伸,就會得出我們常用一些BUG解決方法:

  • 注釋大法: 將代碼一點點注釋,來縮小范圍
  • Printf大法: 在合適的代碼位置對特定的變量等進行輸出
  • 日志大法: 在代碼合適位置記錄相關變量等關鍵數(shù)據(jù)

或許你還有其他名稱的方法,但是基本都屬于二分定位法的范疇!

IDE調試法

??此法在程序開發(fā)階段是絕對的利器!通過加斷點、單步調試等可以快速的發(fā)現(xiàn)問題所在。突然想到了宇宙第一 IDE:Visual Studio。但是,該方法有個比較大的限制:對于非邏輯性錯誤(比如內存泄露)來說,IDE調試法就有些乏力了。因為單純的調試,可能BUG并不會出現(xiàn)。而且一旦出現(xiàn)該種問題,可能會直接導致 IDE 調試不可用。
??其實,IDE 調試,不僅僅是找 BUG 解決問題,對于分析代碼邏輯來說無二選擇。對于某些設計邏輯的實現(xiàn),是否符合當初的設計。僅僅通過最終結果不能證明正確,還是需要通過IDE來驗證!殊不知,在破解、逆向領域,調試絕對的 NB,誰會有心情悶頭看那一堆匯編代碼,直接上調試器分析多好。

小黃鴨調試法(Rubber duck debugging)

??又稱橡皮鴨調試法,黃鴨除蟲法。就是通過向不懂程序的人(只要是不了解要解釋的代碼的任何一個人都可以,比將你寫的代碼解釋給你的同事)詳細解釋代碼,從中發(fā)現(xiàn)問題或者獲取靈感! 此概念是參照于一個來自《程序員修煉之道》書中的一個故事。傳說中程序大師隨身攜帶一只小黃鴨,在調試代碼的時候會在桌上放上這只小黃鴨,然后詳細地向鴨子解釋每行代碼。

??許多程序員都有過向別人(甚至可能向完全不會編程的人)提問及解釋編程問題,就在解釋的過程中擊中了問題的解決方案。一邊闡述代碼的意圖一邊觀察它實際上的意圖并做調試,這兩者之間的任何不協(xié)調會變得很明顯,并且更容易發(fā)現(xiàn)自己的錯誤。如果沒有玩具小鴨子也可以考慮向其它東西傾訴,比如桌上的花花草草,鍵盤鼠標。
??類似的,有一種現(xiàn)象叫做ConeofAnswers,這是一個常見的現(xiàn)象。你的朋友跑來問你一個問題,但是當他自己把問題說完,或者說到一半的時候就想出了答案走了,留下一臉茫然的你。是的,這個時候你就起到了那只小黃鴨的作用。
??相似的概念還有不少,列如自白調試、紙板程序員或程序員的假人、想出腦外等等。總的來說,在你試圖表述自己的想法的過程中,自然地在促使自己去整理思路,重新考慮問題。
??這種方法流傳開后,很多程序員效仿,開始拿其他玩具,比如手辦、喜歡二次元的、還會拿初音或者是其他公仔呀。

重讀法

??這種方法比較簡單直接,就是通過一遍遍地閱讀代碼來發(fā)現(xiàn)問題。

重構法

??終極必殺器。如果最終無論如何也不能找到BUG的問題所在,那就直接重構吧!重構有個問題需要注意,就是重構時不要再參看之前的代碼!重構必須要考慮結構性的設計問題!
??當然,對于簡單的代碼(對整體代碼結構影響不大),直接重寫會更迅速!

總結

??常用的BUG查找方法基本就是以上這幾種,可能你還有不同的叫法或者其他方法。在實際問題解決中,可能需要多種方法結合使用。
??優(yōu)先解決可重現(xiàn)的bug,有些bug不是很明顯,那么就想辦法增加他的破壞性,把現(xiàn)象放大,這在我們的系統(tǒng)壓力測試時會經常遇到一種方法。有時候我們甚至需要問自己,如果我要實現(xiàn)bug描述的現(xiàn)象我要怎么寫代碼才行?
最后放幾個奇葩注釋!

// _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // . ' \\| |// `. // / \\||| : |||// \ // / _||||| -:- |||||- \ // | | \\\ - /// | | // | \_| ''\---/'' | | // \ .-\__ `-` ___/-. / // ___`. .' /--.--\ `. . __ // ."" '< `.___\_<|>_/___.' >'"". // | | : `- \`.;`\ _ /`;.`/ - ` : | | // \ \ `-. \_ __\ /__ _/ .-` / / // ======`-.____`-.___\_____/___.-`____.-'====== // `=---=' // // ............................................. // 佛祖鎮(zhèn)樓 BUG辟易 // 佛曰: // 寫字樓里寫字間,寫字間里程序員; // 程序人員寫程序,又拿程序換酒錢。 // 酒醒只在網(wǎng)上坐,酒醉還來網(wǎng)下眠; // 酒醉酒醒日復日,網(wǎng)上網(wǎng)下年復年。 // 但愿老死電腦間,不愿鞠躬老板前; // 奔馳寶馬貴者趣,公交自行程序員。 // 別人笑我忒瘋癲,我笑自己命太賤; // 不見滿街漂亮妹,哪個歸得程序員? //_ooOoo_ //o8888888o //88" . "88 //(| -_- |) // O\ = /O //___/`---'\____ //. ' \\| |// `. /// \\||| : |||// \ /// _||||| -:- |||||- \ //| | \\\ - /// | | //| \_| ''\---/'' | | //\ .-\__ `-` ___/-. / //___`. .' /--.--\ `. . __ //."" '< `.___\_<|>_/___.' >'"". //| | : `- \`.;`\ _ /`;.`/ - ` : | | //\ \ `-. \_ __\ /__ _/ .-` / / //======`-.____`-.___\_____/___.-`____.-'====== //`=---=' // // ............................................. // 佛曰:bug泛濫,我已癱瘓! /* * * ┌─┐ ┌─┐ * ┌──┘ ┴───────┘ ┴──┐ * │ │ * │ ─── │ * │ ─┬┘ └┬─ │ * │ │ * │ ─┴─ │ * │ │ * └───┐ ┌───┘ * │ │ * │ │ * │ │ * │ └──────────────┐ * │ │ * │ ├─┐ * │ ┌─┘ * │ │ * └─┐ ┐ ┌───────┬──┐ ┌──┘ * │ ─┤ ─┤ │ ─┤ ─┤ * └──┴──┘ └──┴──┘ * 神獸保佑 * 代碼無BUG! */ /** * * __ (__`\ * (__`\ \\`\ * `\\`\ \\ \ * `\\`\ \\ \ * `\\`\#\\ \# * \_ ##\_ |## * (___)(___)## * (0) (0)`\## * |~ ~ , \## * | | \## * | /\ \## __..---'''''-.._.._ * | | \ `\## _.--' _ `. * Y | \ `##' \`\ \ * / | \ | `\ \ * /_...___| \ | `\\ * / `. | / ## * | | | / #### * | | | / #### * | () () | \ | | _.-' ## * `. .' `._. |______..| |-'| * `------' | | | | | || | * | | | | | || | * | | | | | || | * | | | | | || | Joan Stark * _____ | | | |____| || | * jgs / `` |-`/ ` |` | * \________\__\_______\__\ * """"""""" """""""'""" * */ /* .::::. .::::::::. ::::::::::: FUCK YOU ..:::::::::::' '::::::::::::' .:::::::::: '::::::::::::::.. ..::::::::::::. ``:::::::::::::::: ::::``:::::::::' .:::. ::::' ':::::' .::::::::. .::::' :::: .:::::::'::::. .:::' ::::: .:::::::::' ':::::. .::' :::::.:::::::::' ':::::. .::' ::::::::::::::' ``::::. ...::: ::::::::::::' ``::. ````':. ':::::::::' ::::.. '.:::::' ':'````.. */

總結

以上是生活随笔為你收集整理的常用 BUG 解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。