[英]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-mode
是child
,我在網上搜索過,但仍然無法解決。
一個月前,我以這種方式成功調試了程序,不知道為什么它現在不起作用。 但是可以直接使用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.