gdbkerneldebug的程式斷點
gdb除錯kernel的時候, 如果設定通用函式斷點, 比如vfs_read, 就會遇到一堆撞到斷點的地方, 比如tty輸入一個字元, 就是vfs_read, 沒辦法除錯具體的某一個程式
一種辦法就是條件斷點, 其實不是很好用, 比如用pid, 但是有時候這個程式還沒啟動, 比如task的comm來判定, 但是kernel中是不支援strcmp來判斷字串是否相等, 因為需要跑函式
gdb 7.5對此問題做了增強, gdb自己去比較字串, 而不需要機器去跑程式碼
https://sourceware.org/gdb/current/onlinedocs/gdb/Convenience-Funs.html#Convenience-Funs
b do_fault if $_streq($lx_current()->comm, "a.out")
還可以對呼叫者來做條件斷點, 比如a->c, b->c, 斷點只停在b呼叫c的地方
$_caller_is(name[, number_of_frames])
Returns one if the calling function’s name is equal to name. Otherwise it returns zero.
If the optional argument number_of_frames is provided, it is the number of frames up in the stack to look. The default is 1.
Example:
(gdb) backtrace
#0 bottom_func ()
at testsuite/gdb.python/py-caller-is.c:21
#1 0x00000000004005a0 in middle_func ()
at testsuite/gdb.python/py-caller-is.c:27
#2 0x00000000004005ab in top_func ()
at testsuite/gdb.python/py-caller-is.c:33
#3 0x00000000004005b6 in main ()
at testsuite/gdb.python/py-caller-is.c:39
(gdb) print $_caller_is ("middle_func")
$1 = 1
(gdb) print $_caller_is ("top_func", 2)
$1 = 1
相關文章
- JAVA編寫的斷點續傳小程式Java斷點
- 偵錯程式中的斷點是如何設定的?斷點
- ssis package 在除錯狀態中設定斷點,程式 不進入斷點 的解決方案Package除錯斷點
- Pycharm的斷點除錯PyCharm斷點除錯
- 偵錯程式工作原理(2):實現斷點斷點
- 程式設計的知識點 (不斷積累,終身程式設計)程式設計
- 簡單的斷點續傳斷點
- 關於gdb斷點的真相斷點
- 斷點續傳斷點
- OD常用斷點斷點
- AS斷點除錯斷點除錯
- [譯] 斷點:像專家一樣除錯程式碼斷點除錯
- VC嵌入斷點中斷INT3斷點
- 12. 斷點續傳的原理斷點
- 新版的Chrome斷點有問題Chrome斷點
- webstorm 斷點除錯WebORM斷點除錯
- 斷點設定列表斷點
- 前端斷點及使用前端斷點
- fiddler斷點功能斷點
- windows 訊息斷點Windows斷點
- js如何判斷節點的型別JS型別
- HTTP檔案斷點續傳的原理HTTP斷點
- PyTorch儲存模型斷點以及載入斷點繼續訓練PyTorch模型斷點
- 在 Python 除錯過程中設定不中斷的斷點Python除錯斷點
- 斷點(上線版) - 阿韋斷點
- js斷點除錯心得JS斷點除錯
- Android 斷點續傳Android斷點
- 除錯——條件斷點除錯斷點
- 【解決】Xcode9斷點無法停在程式碼區XCode斷點
- 不同的斷點,不同的效果!!! (9千字)斷點
- 關於http斷點續傳那點事HTTP斷點
- 中斷和中斷處理程式
- [譯] Xcode 中的使用者斷點XCode斷點
- Chrome開發者工具中Elements(元素)斷點的用途Chrome斷點
- 【Mysql】Mysql GTID複製程式出現異常,出現斷點MySql斷點
- Lua中如何實現類似gdb的斷點除錯—07支援通過函式名稱新增斷點斷點除錯函式
- 斷點續傳教學例子斷點
- Fiddler大全之斷點操作斷點