【问题标题】:QEMU run OK by Eclipse but fail when debuggingQEMU 在 Eclipse 中运行正常,但在调试时失败
【发布时间】:2012-11-29 02:19:48
【问题描述】:

我正在研究 QEMU 的源代码。

我用 Eclipse 打开它并配置了环境。然后我可以为ARM平台构建它并通过引导Linux运行它。

调试时,运行某些功能后失败。 错误信息是:

qemu: 无法打开磁盘映像 rdinit=/bin/sh": 没有这样的文件或目录

【问题讨论】:

  • 看起来 QEMU 尝试使用您主机的 /bin/sh 而不进行架构检查。尝试在 Internet 上为您的目标平台获取已编译的 sh 二进制文件(busybox 重命名为 sh 将运行良好)并将其与 QEMU 一起使用
  • 使用 Eclipse,QEMU 可以用busybox作为文件系统启动Linux。但是,当我在同一环境中调试 QEMU 时会发生错误。这很奇怪,因为如果我能运行 QEMU,我就能调试它。

标签: linux eclipse qemu


【解决方案1】:

项目配置文件中的某处似乎缺少"(双引号字符),或者可能是多余的。

一个典型的 QEMU 调用是qemu-system-arm -kernel path/to/zImage -initrd path/to/test_rootfs -append "root=/dev/ram rdinit=/test"

如果你在-append 之后跳过第一个双引号 - qemu 会认为rdinit=/test 是磁盘映像,并尝试将其作为文件打开

一种可能的解决方案是在 Eclipse 项目目录中查找 "rdinit" 关键字并检查所有 grep 结果中是否存在缺失/冗余引号

cd /your/project/dir
grep -rw rdinit .

【讨论】:

  • 这是我的命令: -M compatiblepb -kernel zImage -initrd rootfs.img -append "root=/dev/ram rdinit=/bin/sh" 所以我不认为t forget the double quote after -append. I dont命令错误,因为 QEMU 可以成功运行。只有在调试时才会失败。
  • 调试时会发生什么?也许调试器丢失了报价?也许您可以使用strace 来查看正在调用的命令?
  • 调试时QEMU在函数static int parse_block_error_action(const char *buf, int is_read)处失败,并输出错误信息:qemu: could not open disk image rdinit=/bin/sh: No such文件或目录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-01
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多