简体   繁体   中英

Debug init on Qemu using gdb

i am trying to emulate cavium octeon's mips64 linux kernel on Qemu.I am currently having some issues with use mode init code and want to debug init.i am starting the Qemu using -s -S option in the command line and running the gdb using command

ddd --debugger /OCTEON-SDK/tools/bin/mips64-octeon-linux-gnu-gdb /OCTEON-SDK/linux/kernel_2.6/linux/vmlinux

and then attaching the gdb with command

target remote localhost:1234

The gdb is currently showing only the instructions running in kernel space.

What i want to ask is there any method by which i can debug the usermode init and libraries instructions step by step as in case of kernel space? For example if printf is issued from init then i want to see that which instructions are being executed in the libraries and how the control is returned to kernel ?

I have managed to step debug BusyBox's /sbin/init using the procedure described at: Is it possible to use gdb and qemu to debug linux user space programs and kernel space simultaneously?

The only additional things you have to keep in mind are:

  • /sbin/init is just a symlink to busybox , so you must use /bin/busybox as the object file
  • the "main" function for /sbin/init is actually init_main , following BusyBox' convention of calling the main for each pseudo-executable as <exec>_main

It is a bit flaky, but mostly just works.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM