>我正在尝试通过 gdb 调试 UEFI 固件 (OVMF( 中的驱动程序,如下所述:
https://github.com/tianocore/tianocore.github.io/wiki/How-to-debug-OVMF-with-QEMU-using-GDB
它运行良好,但我发现仅为我的驱动程序提供调试符号是不够的。我还需要整个 OVMF 图像的调试符号来正确查看正在发生的事情。使用 edk2 构建 OVMF 后,我有很多 .debug 文件,但我不明白我需要将哪些文件加载到 gdb 中,以及我应该使用哪些地址。
我找到了一些涉及DebugPkg的指令,但无论如何我都无法gdb_uefi.py
工作。它总是无法找到EFI_SYSTEM_TABLE_POINTER
。
最后,我最终编写了自己的脚本,该脚本实现了 gdb 命令,该命令确实设法成功加载了所有调试符号。这可能是一个更糟糕的解决方案,因为它需要设置:执行加载时必须存在带有驱动程序地址的"debug.log",因此您需要首先至少运行一次 QEMU。但是,这对我来说已经足够了。
我的脚本可以在这里找到:
https://github.com/artem-nefedov/uefi-gdb