我想把
当在gdb中执行
然而,上述方法并不能满足我的需求。
通过调试,我认为期望地址是
有什么建议吗?谢谢您的帮助。
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
然而,上述方法并不能满足我的需求。
通过调试,我认为期望地址是
socat
中的有效地址,而不是test
程序中的地址。那么我该如何在test
程序中设置断点呢?如果没有在test
程序中设置断点,当执行continue
命令时,它将直接运行到结束。在socat
程序中设置断点是无用的。有什么建议吗?谢谢您的帮助。
socat
在内存中被映射到哪里。你是否编译为PIE代码? - David Hoelzersocat
而不是test
程序中设置断点吗? - cq674350529test
可执行文件和相同的地址0x080487D4
吗? - sigjuice