2012-12-11 87 views
4

我正在研究QEMU的源代码。QEMU由Eclipse运行正常,但在调试时失败

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

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

qemu: could not open disk image rdinit=/bin/sh": No such file or directory
+0

它看起来像QEMU尝试使用主机的'/斌/ sh'没有architectur e检查。尝试在互联网上为您的目标平台获取已编译的'sh'二进制文件('busybox'重命名为'sh'将运行正常)并将其与QEMU一起使用 –

+0

使用Eclipse,QEMU可以使用busybox作为文件系统引导Linux。但是,当我在相同的环境中调试QEMU时发生错误。这很奇怪,因为如果我可以运行QEMU,我将能够调试它。 –

回答

0

看起来像有缺失"(双引号字符)在项目配置文件中的某个地方,或者,也许,一个多余的。

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

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

一个可能的解决方案是到grep Eclipse项目目录为"rdinit"关键字和检查所有grep的结果丢失/冗余报价

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

这是我的命令: -M versatilepb -kernel zImage -initrd rootfs.img -append“root =/dev/ram rdinit =/bin/sh” 因此,我不会忘记双引号后的后缀。 因为QEMU可以成功运行,所以我不认为命令中有什么错误。 它只在调试时失败。 –

+0

当你正在调试时会发生什么?也许调试器失去了一个报价?也许你可以使用'strace'来查看被调用的命令? –

+0

调试时,QEMU在函数static int parse_block_error_action(const char * buf,int is_read)失败,并输出错误消息: qemu:无法打开磁盘映像rdinit =/bin/sh:没有这样的文件或目录 –

相关问题