多執行緒除錯方法

2021-06-21 12:42:50 字數 1245 閱讀 4096



set target-async 1

set pagination off

set non-stop on

info threads 

顯示當前可除錯的所有執行緒,每個執行緒會有乙個

gdb為其分配的

id,後面操作執行緒的時候會用到這個id。

前面有*

的是當前除錯的執行緒。

threadid 

切換當前除錯的執行緒為指定

id的執行緒。

breakthread_test.c:123 thread all

在所有執行緒中相應的行上設定斷點

讓乙個或者多個執行緒執行

gdb命令

command

。讓所有被除錯執行緒執行

gdb命令

command

。setscheduler-locking off|on|step 

估計是實際使用過多執行緒除錯的人都可以發現,在使用

step

或者continue

命令除錯當前被除錯執行緒的時候,其他執行緒也是同時執行的,怎麼只讓被除錯程式執行呢?通過這個命令就可以實現這個需求。

off

不鎖定任何執行緒,也就是所有執行緒都執行,這是預設值。

on 只有當前被除錯程式會執行。

step

在單步的時候,除了

next

過乙個函式的情況

(熟悉情況的人可能知道,這其實是乙個設定斷點然後

continue

的行為)

以外,只有當前執行緒會執行。

開源的gdb

被廣泛使用在

linux

、osx

、unix

和各種嵌入式系統(例如手機),這次它又帶給我們乙個驚喜。

多執行緒除錯之痛

偵錯程式(如

vs2008

和老版gdb

)往往只支援

all-stop

模式,除錯多執行緒程式時,如果某個執行緒斷在乙個斷點上,你的偵錯程式會讓整個程式

freeze

,直到你

continue

這個執行緒,程式中的其他執行緒才會繼續執行。這個限制使得被除錯的程式不能夠像真實環境中那樣執行

--當某個執行緒斷在乙個斷點上,讓其他執行緒並行執行。

gdbv7.0

引入的non-stop

模式使得這個問題迎刃而解。在這個模式下,

GDB多執行緒除錯方法

一 多執行緒除錯 多執行緒除錯重要就是下面幾個命令 info thread 檢視當前程序的執行緒。thread 切換除錯的執行緒為指定id的執行緒。break file.c 100 thread all 在file.c檔案第100行處為所有經過這裡的執行緒設定斷點。set scheduler loc...

多執行緒除錯)

軟體除錯是我們軟體開發過程中的重要一課。在前面,我們也討論過程式除錯,比如說這裡。今天,我們還可以就軟體除錯多講一些內容。比如說條件斷點,資料斷點,多執行緒斷點等等。cpp view plain copy include intvalue 0 void test intmain 1 資料斷點 所謂資...

linux gdb 除錯多執行緒 單獨除錯執行緒

linux gdb 除錯多執行緒 單獨除錯執行緒 2011年01月26日 星期三 下午 06 10 一 多執行緒除錯 多執行緒除錯可能是問得最多的。其實,重要就是下面幾個命令 info thread 檢視當前程序的執行緒。thread 切換除錯的執行緒為指定id的執行緒。break file.c 1...