繁体   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