如何在 gdb 中加载整个 OVMF UEFI 映像的调试符号?

How to load debug symbols for the whole OVMF UEFI image in gdb?

我正在尝试通过 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