"(gdb)运行"在qemu模拟arm架构上运行可执行文件时崩溃

IlM*_*anu 8 c linux gdb arm qemu

这是我的第一条消息,我正在给你写信,因为这次我真的无法解决这个问题.

我正在学习关于gdb的课程.在后面的课程中,课程涵盖了ARM体系结构的调试,因此我提供了一个允许我模拟这种情况的设置.

我目前的设置是由:

  • Windows 10:物理主机
    • Ubuntu 12.04.5 LTS:来自Windows 10上的Oracle Virtual Box的访客操作系统
      • Linux debian-armel 2.6.32-5-versatile:在OS上通过qemu 2.8.0在Ubuntu上运行

ARM Debian映像来自https://people.debian.org/~aurel32/qemu/armel/

图像随启动而启动

qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda debian_squeeze_armel_standard.qcow2 -append "root=/dev/sda1" -m 256 -redir tcp:2222::22
Run Code Online (Sandbox Code Playgroud)

我修改了sources.list和apt.conf以允许apt工作,因为de distro已经过时了.我更新并升级并安装了gcc和gdb.

尝试调试时出现问题:我可以在gdb中加载可执行文件

root@debian-armel:~/video-11/video-11# file ./main
./main: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在gdb中运行它时,我收到此消息并且执行挂起,直到我能够从另一个控制台终止gdb进程

------------[ cut here ]------------
WARNING: at /build/linux-2.6-fIxTVd/linux-2.6-2.6.32/debian/build/source_armel_none/kernel/sched.c:2628 wake_up_process+0x2c/0x48()
Modules linked in: loop sg smc91x sr_mod mii cdrom psmouse evdev ext3 jbd mbcache sd_mod crc_t10dif sym53c8xx scsi_transport_spi scsi_mod
[<c002b068>] (unwind_backtrace+0x0/0xdc) from [<c0046f88>] (warn_slowpath_common+0x4c/0x80)
[<c0046f88>] (warn_slowpath_common+0x4c/0x80) from [<c00446f0>] (wake_up_process+0x2c/0x48)
[<c00446f0>] (wake_up_process+0x2c/0x48) from [<c0026930>] (arch_ptrace+0x214/0x4bc)
[<c0026930>] (arch_ptrace+0x214/0x4bc) from [<c00508d8>] (sys_ptrace+0x9c/0x164)
[<c00508d8>] (sys_ptrace+0x9c/0x164) from [<c0024ec0>] (ret_fast_syscall+0x0/0x28)
---[ end trace 98ab50bc781b314f ]---
Run Code Online (Sandbox Code Playgroud)

有谁可以指点我解决这个问题的方向?

提前致谢!

Jon*_*hon 1

不是我的答案,而是为了将问题标记为已关闭:

\n\n
\n

这可能是来宾内核中的一个错误(尽管不一定如此),因此\n我会首先尝试使用比2.6.32更新的内核,\n现在已经有近8年的历史了。\xe2\x80\x93 彼得·梅德尔 2017 年 3 月 3 日 13:14

\n
\n