GDB 'find' 命令提前终止
GDB 'find' command terminating early
我正在寻找 GDB 程序内存中的特定字节序列。
'find' 从特定地址 (0x104f90) 开始有效,但从该地址以下开始的 'find' 无效:
(gdb) find /w 0x104f90, 0x108fe4, 0x6863203b
0x108e08
0x108e58
0x108ee8
对
(gdb) find /w 0x104f80, 0x108fe4, 0x6863203b
Pattern not found.
这个地址周围的内存(表面上)可以被 GDB 访问:
(gdb) x/12x 0x104f80
0x104f80: 0x00000000 0x00000000 0x00000000 0x00000000
0x104f90: 0x00000000 0x00000000 0x00000000 0x00000000
0x104fa0: 0x00000000 0x00000000 0x00000000 0x00000000
并且这两个地址都在堆上——info proc mappings
表示堆从 0xe7000
运行 - 0x109000
任何人都可以就我在这里遗漏的内容提出建议吗?谢谢!
问题是我使用的是 gdbserver,gdbserver 中有一个错误,如果 'find' 函数在 16,000 字节中找不到它正在寻找的内容,它就会放弃。请参阅 https://sourceware.org/pipermail/gdb-patches/2020-April/167829.html 以获取官方错误报告。
解决方案要么更新到 gdb 10(这将有一个修复),要么限制 'find' 查询少于 16,000 字节
我正在寻找 GDB 程序内存中的特定字节序列。
'find' 从特定地址 (0x104f90) 开始有效,但从该地址以下开始的 'find' 无效:
(gdb) find /w 0x104f90, 0x108fe4, 0x6863203b
0x108e08
0x108e58
0x108ee8
对
(gdb) find /w 0x104f80, 0x108fe4, 0x6863203b
Pattern not found.
这个地址周围的内存(表面上)可以被 GDB 访问:
(gdb) x/12x 0x104f80
0x104f80: 0x00000000 0x00000000 0x00000000 0x00000000
0x104f90: 0x00000000 0x00000000 0x00000000 0x00000000
0x104fa0: 0x00000000 0x00000000 0x00000000 0x00000000
并且这两个地址都在堆上——info proc mappings
表示堆从 0xe7000
运行 - 0x109000
任何人都可以就我在这里遗漏的内容提出建议吗?谢谢!
问题是我使用的是 gdbserver,gdbserver 中有一个错误,如果 'find' 函数在 16,000 字节中找不到它正在寻找的内容,它就会放弃。请参阅 https://sourceware.org/pipermail/gdb-patches/2020-April/167829.html 以获取官方错误报告。
解决方案要么更新到 gdb 10(这将有一个修复),要么限制 'find' 查询少于 16,000 字节