加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

附加到进程时,gdb无法插入断点

发布时间:2020-12-16 07:20:46 所属栏目:百科 来源:网络整理
导读:我正在尝试将gdb附加到socat启动的程序中,如下所示: socat TCP-LISTEN:5678,reuseaddr,fork EXEC:./test 在另一个终端, sudo gdb attach `pidof socat`br *0x080487D4 当在gdb中执行continue命令时,它会显示如下错误: Warning:Cannot insert breakpoint 1.
我正在尝试将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在测试程序的.text中. gdb的后续分支模式是孩子,我在线搜索但仍无法解决.

我一个月前就像这样成功地调试了程序,并且不知道为什么它现在不起作用.但是如果使用gdb直接调试程序就可以了:

gdb -q ./test

但是,上述方式无法满足我的需求.

通过调试,我认为gdb期望该地址是socat中的有效地址而不是测试程序.那么如何在测试程序中设置断点呢?如果没有测试程序中的断点,它将在执行continue命令时直接运行到最后.在socat程序中设置断点是没用的.

有什么建议?提前致谢.

解决方法

我已经弄清楚如何在测试程序中设置断点.

当使用socat启动测试程序时,它将不会在套接字连接到来之前分叉测试过程.因此,尝试在测试程序中直接设置断点失败.

我使用一个工具(为了我的目的,选择pwntools)连接到它并暂停它,然后使用gdb连接到分叉测试过程.接下来,我可以正常调试.

有更好的想法吗?提前致谢.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读