qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: Debugging a 64-bit kernel in qemu


From: Markus Duft
Subject: Re: [Qemu-devel] Re: Debugging a 64-bit kernel in qemu
Date: Mon, 03 Jan 2011 14:12:10 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101108 Lightning/1.0b3pre Thunderbird/3.1.6

On 01/03/2011 02:00 PM, Jan Kiszka wrote:
> [ please keep CCs ]
> 
> Am 03.01.2011 13:27, Markus Duft wrote:
>> On 01/03/2011 01:15 PM, Markus Duft wrote:
>>> On 01/03/2011 12:15 PM, Jan Kiszka wrote:
>>> [snip]
>> [snip]
>>> actually, i find that Ted Harkington was right: in 0.11.1 i can debug 32 
>>> bit code with qemu-system-x86_64 well enough (which means i debugged all 
>>> the 32 bit part of my kernel without ever seen _any_ problem/non-working 
>>> feature/whatever). wouldn't it be better to have 64 bit debugging working 
>>> in the 64 bit version, with 32 bit mode working mostly (with whatever small 
>>> issues), rather than just completely dooming 64 bit debugging...?
>>>
>>
>> owh - spoke too soon. there must be more to it: i tried reverting 
>> 5f30fa18ad043a841fe9f0c3917ac60f2519ebd1, which restores ability to debug my 
>> 64 bit kernel just fine, but now i get the packet too long when trying to 
>> debug 32 bit code....
> 
> Hmm, that's new. You definitely loose stack unwinding when using the
> wrong mode, thus source-level debugging.

hmmm... ok - that could be. my "source" in that case is all assembly for the 32 
bit part ;) i didn't have such a close look at stack unwinding, as i'm all in 
one single 32 bit procedure. the next call is already a far call to 64 bit 
mode, which re-sets the stack anyway.

> 
> I thought that thread suggested to set the arch explicitly, maybe I
> misremembered that:
> 
> set arch i386:x86_64
> tar rem :1234

arch is automatically at x86_64, as i start gdb giving it my elf64 kernel to 
load (which switches gdb to x86_64). however the first few instructions are 32 
bit, switching to long mode then.

> 
> If that is required, you probably load a 32-bit binary into gdb that
> also contains 64-bit code in some section. I guess this is even more
> confusing for gdb.

the other way round: i have a elf64 binary, containing all 64 bit code, but 
with exactly _one_ section containing 32 bit bootstrap code, which switches to 
long mode.

> 
>>
>> wouldn't it be possible to implement some kind of explicit switch with qemu 
>> in the meantime, so i can choose what bitness i want to debug? I know, it's 
>> a problem with gdb under the hood, but still - it's really uncool debugging 
>> doesn't work in either of the two cases.
> 
> Wasn't required so far. If you debug in either mode, "set arch" should
> do the job. If you have to debug across mode switches, that knob won't
> help anyway.

that definitely doesn't help in either of my cases... :( behaviour stays the 
same, no matter if i'm currently breaking in 32 bit or 64 bit code, and setting 
either architecture in any of the situations.

Regards, Markus

> 
> Jan
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]