OD 除錯多執行緒遇到的問題以及解決方法

2021-09-22 12:40:23 字數 645 閱讀 4941

在除錯多執行緒程式的時候,如果遇到斷點能斷下來,但是一按f7/f8程式就執行起來了,這種情況多半是執行緒被掛起了

首先是去看看執行緒視窗,是不是有執行緒被掛起來,如果有,右鍵-->resume all thread,然後就可以繼續單步除錯了

這種情況一般是程式有一些反除錯手段,我當時的情況是有兩個執行緒,總是在第乙個執行緒結束的時候od就終止了,但是我需要分析的資料都在第二個執行緒裡面,所以當時糾結了好久,試過下各種斷點,包括斷在建立執行緒、_exitthread之類的地方,但是還是無濟於事。再說明一下,我當時是在64位機上面除錯,我除錯的程式程序b是由另乙個程式程序a啟動的,在od中是用附加了b程序。

解決辦法就是:原版od+strongod+sharpod 64,因為strongod很多功能可能在64位機器上面無法正常執行其功能,需要用到sharpod來執行主要的反除錯功能。

用上面的配置把程式載入之後,就不會出現執行到一半od就終止了,能夠執行到程式結束。

strongod配置:

sharpod配置:

執行緒的檢視以及利用gdb除錯多執行緒

gdb除錯常用命令,attach,br,n,bt 在oceanbase除錯中,必須用到gdb,將常用命令蒐集記錄如下 1.attach 用gdb除錯乙個正在執行中的程序 gdb pid 2.br 設定斷點 br filename line num br namespace classname fun...

多執行緒開發中遇到的問題

1.開發專案 大體框架如下 1.主線程接收命令,放進佇列 1 中.命令分 2 種 本地執行命令 網路傳輸命令 2.處理執行緒 從佇列 1 中取出依次取出命令進行處理 分兩種情況 1.取到本地命令,直接執行,並立即將結果放入佇列 2 中,使用訊號量 通知主線程 接收處理結果 2.網路傳輸命令,本地立即...

GDB常用除錯命令以及多程序多執行緒除錯

今天把所有的gdb常用的除錯命令都過了一遍,尤其是多執行緒除錯。所以先做個總結,以免忘記。以後如果有新的有用的命令會繼續追加。執行命令。打斷點,使用方法 對於break命令,我們要靈活使用。例如打多個斷點。多執行緒程式中我們可以主函式中線程建立後立即打斷點,執行執行緒函式入口打斷點等。關閉斷點 de...