簡體   English   中英

附加到進程時,gdb無法插入斷點

[英]gdb can't insert a breakpoint when attach to a process

我正在嘗試將gdb附加到由socat啟動的程序中,如下所示:

socat TCP-LISTEN:5678,reuseaddr,fork EXEC:./test

在另一個航站樓

sudo gdb 
attach `pidof socat`
br *0x080487D4

在gdb中執行continue命令時,顯示如下錯誤:

Warning:
Cannot insert breakpoint 1.
Cannot access memory at address 0x80487d4

Command aborted.

0x080487D4在test程序的.text中。 gdb follow-fork-modechild ,我在網上搜索過,但仍然無法解決。

一個月前,我以這種方式成功調試了程序,不知道為什么它現在不起作用。 但是可以直接使用gdb調試程序,如下所示:

gdb -q ./test

但是,上述方法無法滿足我的需求。

通過調試,我認為gdb希望該地址是socat的有效地址,而不是test程序。 那么如何在test程序中設置斷點呢? test程序中沒有斷點,當執行continue命令時,它將直接運行到最后。 socat程序中設置斷點是沒有用的。

有什么建議嗎? 提前致謝。

我已經弄清楚了如何在test程序中設置斷點。

當使用socat啟動test程序時,直到建立套接字連接,它才會派生test過程。 因此,嘗試直接在test程序中設置斷點失敗。

我使用一個工具(出於我的目的,選擇pwntools )連接到它並掛起它,然后使用gdb附加到派生的test過程。 接下來,我可以正常調試。

還有更好的主意嗎? 提前致謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM