kernelnewbies.kernelnewbies.org archive mirror
 help / color / mirror / Atom feed
* Kernel Debugging using Qemu
@ 2015-08-15  2:17 Aruna Hewapathirane
  2015-08-15  4:40 ` Saket Sinha
  0 siblings, 1 reply; 3+ messages in thread
From: Aruna Hewapathirane @ 2015-08-15  2:17 UTC (permalink / raw)
  To: kernelnewbies

Hi,

If anyone uses Qemu can someone please show me how to get started ?

I tried :

sudo qemu-system-x86_64 -s -S -kernel arch/x86/boot/bzImage -initrd
/boot/initrd.img-4.1.2-vtaqemu+ /dev/zero

And it does allow me to access through gdb using target remote
localhost:1234 but when I set a breakpoint in kernel_start and
continue it hangs and tells me /bin/sh: can't access tty; job control
turned off ?

I am runing a Debian 4.1.2 custom kernel. I have enabled Intel
virtulization in the bios. And menuconfig have setup virtualization.

After many tries have finally managed to get this far but now I can
use all the help I can get.

And and all suggestions, guidance, *pointers are most welcome.

Thanks - Aruna

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Kernel Debugging using Qemu
  2015-08-15  2:17 Kernel Debugging using Qemu Aruna Hewapathirane
@ 2015-08-15  4:40 ` Saket Sinha
  2015-08-16  4:19   ` Aruna Hewapathirane
  0 siblings, 1 reply; 3+ messages in thread
From: Saket Sinha @ 2015-08-15  4:40 UTC (permalink / raw)
  To: kernelnewbies

Hi Aruna,

Please find the steps below -


The kernel needs to be compiled with debugging support, for the same
add -g option in KBUILD_CFLAGS and KBUILD_CXXFLAGS.
CONFIG_DEBUG_INFO=y

make ARCH=i386 menuconfig
make ARCH=i386 bzImage -j 5
Now we have compiled the 32 bit binaries


Starting the qemu with the kernel image
qemu -s -S  -kernel arch/x86/boot/bzImage -append "console=ttyS0"
-serial mon:stdio -nographic
OR
qemu -s -S -smp 1,cores=1  -hda /dev/zero -kernel arch/x86/boot/bzImage


Debugging using plane gdb
$gdb vmlinux
(gdb) target remote localhost:1234
(gdb) b start_kernel
(gdb) c



Regards,
Saket Sinha


On Sat, Aug 15, 2015 at 7:47 AM, Aruna Hewapathirane
<aruna.hewapathirane@gmail.com> wrote:
> Hi,
>
> If anyone uses Qemu can someone please show me how to get started ?
>
> I tried :
>
> sudo qemu-system-x86_64 -s -S -kernel arch/x86/boot/bzImage -initrd
> /boot/initrd.img-4.1.2-vtaqemu+ /dev/zero
>
> And it does allow me to access through gdb using target remote
> localhost:1234 but when I set a breakpoint in kernel_start and
> continue it hangs and tells me /bin/sh: can't access tty; job control
> turned off ?
>
> I am runing a Debian 4.1.2 custom kernel. I have enabled Intel
> virtulization in the bios. And menuconfig have setup virtualization.
>
> After many tries have finally managed to get this far but now I can
> use all the help I can get.
>
> And and all suggestions, guidance, *pointers are most welcome.
>
> Thanks - Aruna
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Kernel Debugging using Qemu
  2015-08-15  4:40 ` Saket Sinha
@ 2015-08-16  4:19   ` Aruna Hewapathirane
  0 siblings, 0 replies; 3+ messages in thread
From: Aruna Hewapathirane @ 2015-08-16  4:19 UTC (permalink / raw)
  To: kernelnewbies

Hi Saket,

Thank you so much for the clear instructions. I really wanted to get qemu
to work on my 64bit system so I kept trying and finally I got things to
work.

After following your instructions I could get further but gdb complained
about a "Remote 'g' packet reply is too long".Your way works fine but I
needed to debug a kernel module so what finally worked for me is this.

I am enclosing the steps it may help others some day:

After Googling into the late hours of the morning I saw someone else had
similar issues and he resolved this way:
http://lists.gnu.org/archive/html/qemu-discuss/2014-10/msg00069.html

I am using GNU gdb (GDB) 7.9 the file is remote.c and I commented out lines:

 /* Further sanity checks, with knowledge of the architecture.  */
6157  //if (buf_len > 2 * rsa->sizeof_g_packet)
6158  //  error (_("Remote 'g' packet reply is too long: %s"), rs->buf);

make then make install gdm, then proceed as usual but you need to specify
the -initrd else cannot debug kernel modules. You can still step into the
kernel no issues there but modules nope.

qemu-system-x86_64 -s -S -kernel arch/x86/boot/bzImage -initrd
/boot/initrd.img-4.1.2-vtaqemu+ /dev/zero
xvnc4viewer :5900 ( Your port # may differ.. )

gdb vmlinux
target remote localhost:1234

(gdb) add-symbol-file /home/aruna/kmod/misc.ko 0xffffffffa057e000 -s .data
0xffffffffa0580000 -s .bss 0xffffffffa05802c8

----------gdb
output---------------------------------------------------------------------------------
add symbol table from file "/home/aruna/kmod/misc.ko" at
    .text_addr = 0xffffffffa057e000
    .data_addr = 0xffffffffa0580000
    .bss_addr = 0xffffffffa05802c8
(y or n) y
Reading symbols from /home/aruna/kmod/misc.ko...done.

(gdb) b hello_write

...and it triggers when I echo "testing123" > /dev/aruna

Breakpoint 2 at 0xffffffffa057e050: file /home/aruna/kmod/misc.c, line 29.
----end--gdb
output---------------------------------------------------------------------------------

Thank you very much for your help I am extremely grateful, without your
guidance I would have not figured things out :)

Aruna
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20150816/4531e9b6/attachment.html 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-08-16  4:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-15  2:17 Kernel Debugging using Qemu Aruna Hewapathirane
2015-08-15  4:40 ` Saket Sinha
2015-08-16  4:19   ` Aruna Hewapathirane

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).