GDB如何除錯程式 2 多執行緒

2021-08-14 08:51:47 字數 704 閱讀 4339

1、鎖定執行緒及檢視鎖定的模式

(gdb) set scheduler-locking  on

(gdb) show scheduler-locking

mode for locking scheduler during execution is

"on".

gdb多執行緒除錯乙個重要的設定引數就是scheduler-locking,取值on、off、step,預設為step。

show scheduler-locking //顯示當前scheduler-locking

set scheduler-locking [on/off/step] //設定scheduler-locking

注意:set scheduler-locking要處於執行緒執行環境下才能生效,也就是程式已經執行並且暫停在某個斷點處,否則會出現「target 『exec』 cannot support this command.」這樣的錯誤;而且經過測試,設定後的scheduler-locking值在整個程序內有效,不屬於某個執行緒。

下面根據實際測試結果對scheduler-locking的3種取值進行說明:

on:只有當前除錯執行緒執行,其他執行緒處於暫停狀態。

off:當前除錯執行緒外的其他執行緒一直在正常執行。

step:其他執行緒跟隨當前除錯執行緒執行,但具體怎麼協同執行,測試中無法體現。

如何使用gdb除錯程式

gdb 這就算是進入了gdb環境了。那麼我們使用命令run執行一下看看結果如何?starting program home zhxfan debugme program received signal sigsegv,segmentation fault.0x08048341 in index to...

如何利用gdb除錯程式?

程式的大體意思就是各乙個陣列賦值,然後輸出來 程式已經寫在了上面,下面我們就來看一下如何產生帶有除錯資訊的編譯檔案,這裡我們要使用gcc的 g引數,用於在編譯檔案中加入一些除錯資訊。發現加了 g和沒有加 g,生成的檔案大小不一樣的!你會發現,加上g後,產生的編譯檔案體積也會增加,所以在我們做軟體開發...

GDB除錯程式

gdb的三個功能 1 啟動被除錯的程式 2 設定斷點 3 設定斷點之後可以檢查程式的狀態 1.編譯生成可執行檔案 注意 g 除錯選項 gcc g tst.c o tst 2.啟動gdb gdb tst 3.在main函式處設定斷點 break main 4.執行程式 run5.利用 更加豐富的 gd...