From: Laurent Vivier <Laurent@vivier.eu>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: Wei Yang <weiyang.kernel@gmail.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Failed to set a breakpoint on start_kernel
Date: Sat, 17 Mar 2012 12:25:58 +0100 [thread overview]
Message-ID: <1331983559.29216.1.camel@Quad> (raw)
In-Reply-To: <4F645124.7090001@web.de>
Le samedi 17 mars 2012 à 09:53 +0100, Jan Kiszka a écrit :
> On 2012-03-16 03:43, Wei Yang wrote:
> > All
> >
> > I like qemu very much and know it could debug the kernel.
> >
> > I tried what I searched on web but couldn't stop at the break point.
> > Below is what I did.
> >
> > 1. Both host and guest installed the same OS, Fedora16 x86_64.
> >
> > 2. Compile the qemu with
> > ./configure --target-list=x86_64-softmmu --enable-kvm
> > --enable-debug-tcg --enable-debug --enable-trace-backend=simple
> >
> > 3. With this command I can boot up my guest.
> > ./../qemu/x86_64-softmmu/qemu-system-x86_64 -enable-kvm -smp 4 -m
> > 1024 -boot dc fedora16.img -monitor stdio
> >
> > 4. I git clone the kernel source in the guest and make a new kernel and initrd.
> > I start the guest with this new kernel successfully
> >
> > 5. I copy out the initrd.img and the .config of kernel to host.
> > compile the kernel on host.
> > the kernel source code is identical on host and gueset,
> >
> > 6. I start the guest with the kernel and initrd on host
> > ./../qemu/x86_64-softmmu/qemu-system-x86_64 -enable-kvm -smp 4 -m
> > 1024 -boot dc fedora16.img -monitor stdio -kernel
> > ~/git/linux-yinghai/arch/x86_64/boot/bzImage -initrd
> > ~/git/debug/initramfs-3.0.0.img -append
> > "root=/dev/mapper/vg_wizard-lv_root ro rd.lvm.lv=vg_wizard/lv_root
> > rd.md=0 rd.lvm.lv=vg_wizard/lv_swap"
> >
> > This works fine.
> >
> > 7. Then I start the guest with gdbstub option
> > ./../qemu/x86_64-softmmu/qemu-system-x86_64 -enable-kvm -smp 4 -m
> > 1024 -boot dc fedora16.img -monitor stdio -kernel
> > /home/ywywyang/git/linux-yinghai/arch/x86_64/boot/bzImage -initrd
> > /home/ywywyang/git/debug/initramfs-3.0.0.img -append
> > "root=/dev/mapper/vg_wizard-lv_root ro rd.lvm.lv=vg_wizard/lv_root
> > rd.md=0 rd.lvm.lv=vg_wizard/lv_swap" -S -gdb tcp::4321
> >
> > Then the guest stop at the beginning.
> >
> > 8. Attach the gdb in the kernel source directory
> > gdb
> > file vmlinux
> > target remote localhost:4321
> > b start_kernel
> > c
> >
> > Then the guest will run very happily....
> >
> > Also use the "info b " could show the break point is set.
> >
> > Which step I made a mistake?
>
> Two major issues with this procedure:
>
> 1. When using kvm, a soft breakpoint (as set by 'b') will inject a trap
> instruction into the guest image - which is not yet loaded after the
> bios ran. You need to use a hardware breakpoint in this case.
>
> 2. Due to gdb limitations, you cannot switch between 16/32-bit mode (the
> CPU starts in 16 bit) and the 64-bit mode of kernel within the same gdb
> session. Therefore:
> - let the target run into Linux is active
> - attach gdb
> - issue "hw start_kernel"
> - reboot (e.g. "monitor system_reset")
> - you will hit the breakpoint, and gdb will be usable
You can also try my patch :
http://patchwork.ozlabs.org/patch/137543/
Laurent
next prev parent reply other threads:[~2012-03-17 11:26 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-16 2:43 [Qemu-devel] Failed to set a breakpoint on start_kernel Wei Yang
2012-03-16 18:59 ` Mulyadi Santosa
2012-03-17 8:53 ` Jan Kiszka
2012-03-17 11:25 ` Laurent Vivier [this message]
2012-03-17 13:52 ` Jan Kiszka
2012-03-17 14:16 ` Wei Yang
2012-03-17 14:51 ` Jan Kiszka
[not found] ` <CADLM8XMYHH8ErMqYMYDPWPF_NB5=1RPLKqtcbVBucYuXCvDvTQ@mail.gmail.com>
2012-03-17 13:31 ` Jan Kiszka
2012-03-17 14:01 ` Wei Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1331983559.29216.1.camel@Quad \
--to=laurent@vivier.eu \
--cc=jan.kiszka@web.de \
--cc=qemu-devel@nongnu.org \
--cc=weiyang.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.