From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: None (no SPF record) identity=mailfrom; client-ip=128.130.2.109; helo=mr.tuwien.ac.at; envelope-from=johannes.swoboda@student.tuwien.ac.at; receiver=edk2-devel@lists.01.org Received: from mr.tuwien.ac.at (mr1.kom.tuwien.ac.at [128.130.2.109]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0BF282251213A for ; Fri, 20 Apr 2018 06:33:01 -0700 (PDT) X-Virus-Scanned: amavisd-new at vc5.kom.tuwien.ac.at Received: from mail.student.tuwien.ac.at (mail1.student.tuwien.ac.at [193.170.73.221]) by mr.tuwien.ac.at (8.14.4/8.14.4/Debian-2ubuntu2.1) with ESMTP id w3KDWrik005161; Fri, 20 Apr 2018 15:32:54 +0200 MIME-Version: 1.0 Date: Fri, 20 Apr 2018 15:32:53 +0200 From: Johannes Swoboda To: "Richardson, Brian" Cc: edk2-devel@lists.01.org, clemens.hlauschek@inso.tuwien.ac.at In-Reply-To: <80AC2BAA3152784F98F581129E5CF5AFA47BB72C@ORSMSX114.amr.corp.intel.com> References: <80AC2BAA3152784F98F581129E5CF5AFA47BB72C@ORSMSX114.amr.corp.intel.com> Message-ID: <81589e5ba2ac3ce9eb5b7fb481dff034@student.tuwien.ac.at> X-Sender: johannes.swoboda@student.tuwien.ac.at User-Agent: Roundcube Webmail/1.1.10 Subject: Re: Source code debugging of OVMF X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Apr 2018 13:33:02 -0000 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Hello Brian, Unfortunately, if I understand it correctly, this page explains how to debug efi-apps (where gdb can simply load the efi-file to load the symbols), but this isn't applicable for the ovmf.fd-file itself; gdb refuses to open it. However, this will be of help when I'll look at an efi app. Thank you and kind regards, Johannes On 2018-04-16 17:26, Richardson, Brian wrote: > This page was recently added to the TianoCore wiki. Please let me know > if this is useful info: > https://github.com/tianocore/tianocore.github.io/wiki/How-to-debug-OVMF-with-QEMU-using-GDB > > Thanks ... br > --- > Brian Richardson, Senior Technical Marketing Engineer, Intel Software > brian.richardson@intel.com -- @intel_brian (Twitter & WeChat) > https://software.intel.com/en-us/meet-the-developers/evangelists/team/brian-richardson > > -----Original Message----- > From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of > Johannes Swoboda > Sent: Monday, April 16, 2018 7:09 AM > To: edk2-devel@lists.01.org > Cc: clemens.hlauschek@inso.tuwien.ac.at > Subject: [edk2] Source code debugging of OVMF > > Hello everyone, > > I'm doing a research project on efi security. I would like to do > source code debugging of OVMF. I want to step through the OVMF source > code, set break points, et cetera, preferably with gdb. I want to > debug the overall boot process. Is that possible? > > I understand I can start qemu with the options -s -S. This gives me a > virtual machine that awaits connection of a gdb debugger and further > instructions. > > After connecting with gdb, I can instruct the machine to continue > execution. Unsurprisingly, there is nothing else I can do, because gdb > lacks the relevant symbols. > I tried to read in the OVMF.fd file, as i would do with a binary that > I would debug, but gdb can't handle the file. > It seems to be possible to load an efi app with the file command, but > not this one. > > I found one other person trying to achieve the same five years ago. > [3] suggests that something like this >> (gdb) add-symbol-file ../edk2/Build/OvmfX64/DEBUG_GCC5/X64/Shell.debug >> The address where ../edk2/Build/OvmfX64/DEBUG_GCC5/X64/Shell.debug has >> been loaded is missing > might be possible. However, it appears to me this is may contain > information regarding Shell.efi, an efi-app; but I don't want to debug > an app. I want to debug the overall boot process. > > I'm quoting some terminal output to clarify what I'm trying to achieve: > [johannes@johannes-laptop OVMF_efi_hello_world]$ gdb [...] > (gdb) file OVMF.fd > "/home/johannes/18S/bakk/uefi_virtual/OVMF_efi_hello_world/OVMF.fd": > not in executable format: File format not recognized > (gdb) target remote localhost:1234 > Remote debugging using localhost:1234 > warning: No executable has been specified and target does not support > determining executable automatically. Try using the "file" command. > 0x000000000000fff0 in ?? () > (gdb) step > Cannot find bounds of current function > (gdb) list > No symbol table is loaded. Use the "file" command. > (gdb) continue > Continuing. > [ovmf loads in qemu window] > > I can redirect ovmf debug messages into a text file[1]. > As far as I understand, there is a way to do source code level > debugging > *with* ovmf, to debug efi-apps that are e.g. run via the efi shell[2], > with the help of SourceLevelDebugPkg[4], but this package cannot be > used to source level debug the overall boot process, right? > > Is it possible to do source level debugging of ovmf? > Is it possible to step through ovmf, one instruction or function call > at a time? > How are you ovmf developer debugging it? > > If you could point me to the right direction, that would be great. > > Kind regards, > Johannes > > [1]: I managed to do so via the qemu options -global > isa-debugcon.iobase=0x402 -debugcon file:qemu.ovmf.log" as > demonstrated here > https://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt > [2]:https://github.com/tianocore/tianocore.github.io/wiki/OVMF-FAQ#how-do-i-enable-source-level-debugging-with-ovmf > [3]: > http://edk2-devel.narkive.com/LRWe2mSQ/using-gdb-on-ovmf-with-symbols > [4]: > https://github.com/tianocore/tianocore.github.io/wiki/SourceLevelDebugPkg