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...