c - 尝试单步执行代码时 gdbserver 锁定

标签 c linux debugging gdb gdbserver

当从运行 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/

相关文章:

c++ - 重新抛出异常保留回溯

node.js - 如何使用完整的url调试nodejs?

使用标准 I/O 和系统调用制作文件副本的 C 程序

c - 将字符附加到c中的二维数组值

c - 使用调度策略标志 SCHED_BATCH 或 SCHED_IDLE 会产生错误

linux - 如果我在 linux 中删除写权限,安装在文件夹中的程序是否可以正常运行?

java - 调试java中特定类的代码

c - 将结构传递给这样的函数

javascript - 在 Node-FFI 中使用 SendInput

linux - 如何解决运行速度非常慢的 Perl 脚本在一台服务器上运行速度较快但在另一台服务器上运行速度较慢的问题