当从运行 gdb 的主机向运行 gdbserver 的远程目标(通过 TCP/IP 连接)发送 step
命令时,我在目标上收到以下错误
ptrace: Input/output error.
input_interrupt, count = 1 c = 36 ('$')
此后目标上没有任何反应 - 只是挂起。在主机的gdb上,显示如下
(gdb) step
warning: Remote failure reply: E01
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
这将无限期地持续下去。最终我不得不重新启动目标。 continue
工作得很好,并且能够在我指定的断点上触发。这个错误可能完全是 gdbserver 端的问题还是与我的 gdb 配置有关?
目标上的 gdbserver 版本
- GNU gdbserver(crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.9-2014.09) 7.6.1-2013.10
主机上的 gdb(从源代码构建)版本
- GNU gdb (GDB) 7.7.1
- 此 GDB 配置为“--host=x86_64-unknown-linux-gnu --target=arm-none-eabi”。
最佳答案
看起来我遇到的问题是由于编译主机 GDB 时目标不正确造成的。对于我正在使用的目标处理器,我需要将目标标志设置为
--target=arm-linux-gnueabihf
到目前为止,我能够单步执行代码并触发段错误。
关于c - 尝试单步执行代码时 gdbserver 锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36877503/