假設我的可執行程式是a,共享庫為b.so
我用gdb除錯a,想在b的某個原始檔(比如c.cpp,c.cpp與a不在同乙個目錄下)中設定斷點,使用下面的命令列
break c.cpp:123
提示說「no source file named c.cpp」
我嘗試用下面各種方法設定c.cpp的路徑也不行:
1. 使用gdb的-d引數
2. 使用gdb的dir命令
3. 設定path環境變數
如果我用gdb除錯b.so,即
gdb b.so
則設定斷點是可以的,但光是乙個so沒法執行,那我該怎麼做呢?
當然可以除錯了
如果你的.so的原始檔路徑在/so下面
那你你首先需要
$gdb main
$directory /so
記住用directory目錄
問題已經解決
先break main, 然後run,使.so載入
然後再對共享庫進行break設定
GDB 斷點設定
啟動gdb後,首先就是要設定斷點,程式中斷後才能除錯。在gdb中,斷點通常有三種形式 斷點 breakpoint 在 的指定位置中斷,這個是我們用得最多的一種。設定斷點的命令是break,它通常有如下方式 可以通過info breakpoints n 命令檢視當前斷點資訊。此外,還有如下幾個配套的常...
GDB(設定斷點)
啟動gdb後,首先就是要設定斷點,程式中斷後才能除錯。在gdb中,斷點通常有三種形式 斷點 breakpoint 在 的指定位置中斷,這個是我們用得最多的一種。設定斷點的命令是break,它通常有如下方式 可以通過info breakpoints n 命令檢視當前斷點資訊。此外,還有如下幾個配套的常...
gdb 斷點設定(二)watch
2 watch watch l location expr thread threadnum mask maskvalue l 與 mask沒有仔細研究,thread threadnum 是在多執行緒的程式中限定只有被執行緒號是threadnum的執行緒修改值後進入斷點。經常用到的如下命令 watc...