[英]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.