使用GDB除錯多執行緒例項詳解

2022-09-26 15:24:11 字數 705 閱讀 4974

先寫一段多執行緒程式。

makefile

加上 -g引數生成可調式資訊, 可以進行除錯。

pthread不是linux下的預設的庫,也就是在鏈結的時候,無法找到phread庫中哥函式的入口位址,於是鏈結會失敗。在gcc編譯的時候,附加要加 -lpthread引數即可解決。

gdb test 進入除錯

需要除錯的地方打下斷點,run執行到斷點處。

r 執行到斷點處,info thread可以檢視被除錯的執行緒。

thread apply all bt 讓所有執行緒列印堆疊資訊

set scheduler-locking off|on|step

在使用step或continue命令除錯當前被除錯執行緒的時候,其他執行緒也是同時執行的,如果我們只想要被除錯的sfofcfyna執行緒執行,而其他執行緒停止等待,那就要鎖定要除錯的執行緒,只讓它執行。

off:不鎖定任何執行緒,所有執行緒都執行。

on:只有當前被除錯的執行緒會執行。

step:阻止其他執行緒在當前執行緒單步除錯的時候搶占當前執行緒。只有當next、continue、util以及finish的時候,其他執行緒才會獲得重新執行的。

show scheduler程式設計客棧-locking:

這條命令是為了檢視當前鎖定執行緒的模式。

本文標題: 使用gdb除錯多執行緒例項詳解

本文位址: /os/linux/194321.html

gdb多執行緒除錯

先介紹一下gdb多執行緒除錯的基本命令。info threads顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用到這個id。前面有 的是當前除錯的執行緒。thread id切換當前除錯的執行緒為指定id的執行緒。break thread test.c 12...

gdb 除錯多執行緒

設定core環境 uname a 檢視機器引數 ulimit a 檢視預設引數 ulimit c 1024 設定core檔案大小為1024 ulimit c unlimit 設定core檔案大小為無限 多執行緒如果dump,多為段錯誤,一般都涉及記憶體非法讀寫。可以這樣處理,使用下面的命令開啟系統開...

gdb 多執行緒除錯

推薦閱讀 先介紹一下gdb多執行緒除錯的基本命令。info threads顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用到這個id。前面有 的是當前除錯的執行緒。thread id切換當前除錯的執行緒為指定id的執行緒。break thread test...