Debug方法總結

2021-04-13 21:59:24 字數 636 閱讀 6249

第一步:觀察錯誤規律,根據規律找問題

比如檢視每次錯誤時提示資訊來定位錯誤在**中的位置

第二步:根據現象順藤摸瓜式的分析原因

如果錯誤呈現沒有規律性的情況,只有根據錯誤現象查詢產生問題的原因, 比如今天開發fileserver過程中遇到的情況。先把debug思路總結如下:

現象:單個執行緒沒有問題,但當把執行緒數改為20的時候,有時候就會出現產檔案過程所有程序都執行完列印檔案大小後不動了

1、首先要想到client端阻塞住了,然後檢視client端源**中for語句中的部分,經列印trans_count的值,發現for語句正常

2、再設定斷點debug發現ret = send(sserver, file_buff, nbytesread, 0);這句後都執行不到,到此就可以判斷執行緒阻塞到了此語句。

3、由於執行緒**中只有send這個函式是阻塞函式,驗證了問題就出在這裡

4、由於send是阻塞函式,想到可能是伺服器端沒有接收,造成send阻塞

5、伺服器端不接收,並且出錯呈現隨機性,因此很有可能是佇列的問題

6、檢視訊息佇列的**,發現訊息佇列**的邏輯錯誤,即多執行緒併發時,多個執行緒在阻塞等待noempty_event這個時事件,但有乙個執行緒得到noempty_event,從佇列中取socket並傳送檔案

VScode Latex 設定 debug 總結

全部以 settings.json 中 的形式呈現。editor.wordwrap on 找了乙個小時原因,最後發現是bib檔案裡面缺了乙個逗號。具體問題可以點latex extension 裡面的 view log messages 找到。出了問題一定要仔細看日誌。error file ended...

Pycharm無法debug問題總結

問題描述 在pycharm中寫python時可以執行程式卻突然不能debug。出現debug提示 pydev debugger process x is connecting,但是之後卻一直處於等待連線狀態而報錯。解決方案一 pycharm的網路被禁,需要解禁網路。解決方案二 去掉 idea 檔案重...

來自intlsy s省選debug方法

唯一的要求 自己能看懂 下面會講 變數名與關鍵字 型別 define b cout breakpoint endl define o x cout x x endl define o x cout x x define msz x cout sizeof x sizeof x 1024 1024 m...