我使用此(http://cs.baylor.edu/~donahoo/tools/gdb/tutorial.html)指南来了解GDB的工作原理。 在将代码编译并上传到我的嵌入式linux arm平台之后,我使用远程连接来连接目标上的gdbserver:
目标:
root@zedboard-zynq7:/Software# gdbserver HOST:1234 broken
Process broken created; pid = 1103
Listening on port 1234
Remote debugging from host 192.168.178.32
主机(在虚拟机中运行的Ubuntu 14.04):
Remote debugging using 192.168.178.33:1234
warning: A handler for the OS ABI "GNU/Linux" is not built into this
configuration of GDB. Attempting to continue with the default arm settings.
Cannot access memory at address 0x0
0x43330d40 in ?? ()
(gdb)
我将断点设置为第43行并继续程序直到它在断点处停止:
(gdb) b 43
Breakpoint 1 at 0x8b68: file broken.cpp, line 43.
(gdb) continue
Continuing.
Breakpoint 1, main () at broken.cpp:43
43 double seriesValue = ComputeSeriesValue(x, n);
(gdb)
但是在我的主机上执行了一步后,我收到了这个错误: 主机:
warning: Remote failure reply: E01
Ignoring packet error, continuing...
目标:
ptrace: Input/output error.
input_interrupt, count = 1 c = 36 ('$')
这是什么意思,我该如何解决?
感谢您的帮助。
答案 0 :(得分:0)
主机(在虚拟机中运行的Ubuntu 14.04):
Remote debugging using 192.168.178.33:1234 warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration of GDB. Attempting to continue with the default arm settings.`
这表示您的(主机)GDB尚未构建为支持您要调试的目标。
这是什么意思,我该如何解决?
您需要获得(主机)GDB的不同版本,或者使用正确的--target
设置自行构建一个。
通常正确的主机GDB包含在您用于为目标构建的交叉gcc中。因此,修复可能就像运行/path/to/cross-gdb
而不是gdb
一样简单。