題:
在系統調用時設置斷點
Hugo Kiiski
2014-12-17 02:18:19 UTC
view on stackexchange narkive permalink

我想修改我的teampeak服務器(linux),我特別對與客戶端(UDP)的連接感興趣,所以我認為我需要在linux套接字函數處設置一個斷點以開始反轉。我該如何實現?

謝謝!

撰寫文章:http://stackoverflow.com/questions/8235436/how-can-i-monitor-whats-being-put-in-the-standard-out-buffer-and-break-when-a
一 回答:
nrz
2014-12-17 03:18:52 UTC
view on stackexchange narkive permalink

gdb 中,可以使用 catch syscall 設置syscall斷點。

如果是32位x86(IA-32),在 your_linux_source_dir / usr / include / asm / unistd_32.h 中檢查系統調用號。在32位x86中沒有名為 socket 的系統調用,您是說 socketcall 嗎?它的編號是102。

如果在x86-64(AMD64)中,請在 your_linux_kernel_source_dir / usr / include / asm / unistd_64.h 中檢查系統調用號。名為 socket 的系統調用為41。

然後在 gdb 中運行可執行文件:

  $ gdb myexecutable  

並設置系統調用斷點(41是x86-64中的 socket 系統調用號,為您更改為適當的系統調用號):

 (gdb)捕獲系統調用41  

,然後運行程序:

 (gdb)r  

根據您的配置,也可以使用syscall的名稱(例如 socket )代替數字(例如 41 )。

我不知道何時添加。但是現在您可以使用syscall名稱而不是其編號。因此,只需`catch syscall socket`。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...