Re: [PATCH 0/3] Add support for gdb and lldb


Andrew Fish
 

Rebecca,

Sorry I may have been a commit or 2 behind on the private branch.

On Aug 11, 2021, at 5:30 PM, Rebecca Cran <rebecca@nuviainc.com> wrote:

I should note my comments are against https://github.com/ajfish/edk2/tree/BZ3500-gdb, not the patches you sent out.

AARCH64 is working great! The only thing I noticed that doesn't look quite right is the following message on startup when running gdb -ex "target remote localhost:1234" -ex "source efi_gdb.py" -ex "efi":


Traceback (most recent call last):
File "efi_gdb.py", line 804, in invoke
self.restore_user_state()
File "efi_gdb.py", line 690, in restore_user_state
self.user_selected_frame.select()
gdb.error: Frame is invalid.
Traceback (most recent call last):
File "efi_gdb.py", line 822, in invoke
gdb.execute('efi symbols --extended')
gdb.error: Error occurred in Python: Frame is invalid.
Error occurred in Python: Error occurred in Python: Frame is invalid.

Can you try again? I think I fixed this? The `efi symbols` command is saving user context, so it can restore the context. If there is not a valid target it can fail.

Also thanks for testing on AARCH64!!!!

Running `bt` shows the full set of frames except for the last one which as expected is shown as ??.
I noticed the stack unwind in the gdb builds can be a little wonky at times, I had to add some code to filter out the cruft.

Thanks,

Andrew Fish


--

Rebecca Cran


On 8/11/21 5:22 PM, Andrew Fish wrote:

On Aug 11, 2021, at 3:11 PM, Rebecca Cran <rebecca@nuviainc.com> wrote:

I realized the Arm gcc 10.3 aarch64 download from https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads uses Python 2.7.18 and not Python 3, so the f-Strings and likely more cause problems. I suspect at this point there's little point putting effort into supporting Python 2.
I’ve not tested on ARM yet, so please let me know if it works. I’d like to avoid Python 2.7 support is possible given it is passed its best by date.

I noticed a couple of issues though: in efi_debugging.py the Attributes text is partially underlined with the non-ASCII characters '——————' instead of '----------'.
Thanks did not notice that.

Attributes
——————----
_dict_ : dictionay


There are also a couple of typos of 'dictionary':


_dict_ : dictionay
Shoot though I fixed those




Thanks,

Andrew Fish

--
Rebecca Cran


On 8/8/21 3:46 PM, Andrew Fish via groups.io wrote:
This patch set adds debugging support for gdb and lldb.
It also adds generic debugging classes that use a file like object to
make it easy to import into any debugger that supports Python.

Since these debugging scripts don't depend on any EFI code I was thinking
we could place them in the root of the repo to be easy to discover.

I've tested gdb on Ubuntu and lldb on macOS for IA32 and X64.

Andrew Fish (3):
efi_debugging.py: - Add debugger agnostic debugging Python Classes
efi_gdb.py: - Add gdb EFI commands and pretty Print
efi_lldb.py: - Add lldb EFI commands and pretty Print

efi_debugging.py | 2187 ++++++++++++++++++++++++++++++++++++++++++++++
efi_gdb.py | 918 +++++++++++++++++++
efi_lldb.py | 1044 ++++++++++++++++++++++
3 files changed, 4149 insertions(+)
create mode 100755 efi_debugging.py
create mode 100755 efi_gdb.py
create mode 100755 efi_lldb.py

Join devel@edk2.groups.io to automatically receive all group messages.