从运行gdb的主机发送 step
命令到运行gdbserver的远程目标(通过TCP / IP连接)时,我在目标上收到以下错误
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" .
1 回答
看起来我遇到的问题是由于编译主机GDB时目标不正确 . 对于我正在使用的目标处理器,我需要将目标标志设置为
--target=arm-linux-gnueabihf
到目前为止,我能够逐步执行代码以及触发段错误 .