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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

老司机找BUG指南,赶紧拿走。。

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 老司机找BUG指南,赶紧拿走。。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.碼畜:靠編譯器幫自己查語法錯誤

消滅筆誤:編寫適合程序員的鍵盤練習

if (常量==變量或表達式)

使用goto接力超長的if,switch

連續的if還是if elseif

多個條件的組合:精心的排版

多重括號的匹配

條件編譯

各種const:不要糾結各種常量了,這個世界上唯一不變的就是變化。用APIWriteProcessMemory還能修改正運行的其它進程的內存里面的所謂常量呢!

查看宏展開后的.i文件:VC編譯選項加/EP /P(項目、屬性、配置屬性、C/C++、預處理器、預處理到文件:是,預處理取消顯示行號:是),重新編譯,查看宏展開后對應的.i文件。gcc加-E

偶遇到莫名其妙的編譯錯誤都是用“每次用/*...*/或#if 0...#endif注釋掉不同部分再重新編譯,直到定位到具體語法出錯的位置。”的方法解決的。

附加包含路徑、附加庫路徑、附加依賴庫的設置。

二.碼農:靠調試器幫自己查邏輯錯誤

for/while語句后多余的分號

while/do while語句在語義上的歧義

條件斷點

消息斷點

數據斷點

__asm int3或DebugBreak()斷點

在內存窗口中觀察數據的原始字節形態

Call Stack:崩潰的時候在彈出的對話框按相應按鈕進入調試,按Alt+7鍵查看Call Stack即“調用堆棧”里面從上到下列出的對應從里層到外層的函數調用歷史。雙擊某一行可將光標定位到此次調用的源代碼或匯編指令處,看不懂時雙擊下一行,直到能看懂為止。

“給定一個小點的輸入,完整單步跟蹤(同時按Alt+7鍵查看Call Stack里面從上到下列出的對應從里層到外層的函數調用歷史)一遍。”是理解遞歸函數工作原理的不二法門!

遞歸函數關注以下幾個因素

·退出條件

·參數有哪些

·返回值是什么

·局部變量有哪些

·全局變量有哪些

·何時輸出

·會不會導致堆棧溢出

語法糖越甜,編譯調試查錯越苦!

C++的隱藏調用:單步類的實例“構造”或“復制”或“作為函數參數”或“作為函數返回值返回”或“參加各種運算”或“退出作用域”的語句對應的匯編代碼幾步后,就會來到該類的“構造函數”或“復制構造函數”或“運算符重載”或“析構函數”對應的C/C++源代碼處。

任務管理器、VMMap、Process Monitor、Process Explorer、GDI泄露檢測工具、……

三.碼人:靠寫日志幫自己查運營錯誤

CrashDump或Core的無力。

PDB的無力。

線上Debug的無力。

觀察復雜數據的無力。

多線程調試的無力。

調試時序高度依賴代碼的無力。

調試萬年一遇非法數據的無力。

有時不將“調用函數名字+各參數值,進入函數后各參數值,中間變量值,退出函數前準備返回的值,返回函數到調用處后函數名字+各參數值+返回值”這些信息寫日志到文件中是無論如何也發現不了問題在哪里的,包括捕獲各種異常、寫日志到屏幕、單步或設斷點或生成core或dmp文件、……這些方法都不行!

四.碼神:靠冥想和頓悟幫自己查不可再現錯誤

假死的各種原因:

·控制循環的變量的取值范圍有符號/無符號,==/<=

·控制循環的變量沒變

·控制循環的變量被外部程序修改

·各種資源泄露

·死鎖

·網速變慢或網絡資源耗盡或網絡時通時斷

·權限、UAC、殺毒軟件實時防護

·操作系統或軟件自動升級

·以為系統時間不可逆

·以為系統時間相關變量不會溢出(GetTickCount()約49.7天就歸0了!)

不要企圖優雅的結束(因為這是不可能辦到的)

而要在爛的不能再爛的攤子上也能重整河山!

關注它,

你就可以得到

很多你想要的C/C++

開發工具及學習視頻資料

總結

以上是生活随笔為你收集整理的老司机找BUG指南,赶紧拿走。。的全部內容,希望文章能夠幫你解決所遇到的問題。

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