Messages in this thread | ![/](/images/icornerl.gif) | | From | Nick Desaulniers <> | Date | Wed, 14 Dec 2022 11:39:40 -0800 | Subject | Re: [PATCH v2] scripts/gdb: Ensure the absolute path is generated on initial source |
| |
On Wed, Dec 14, 2022 at 10:57 AM Nick Desaulniers <ndesaulniers@google.com> wrote: > > On Tue, Jul 12, 2022 at 12:02:48PM +0100, Aaron Tomlin wrote: > > Post 'make scripts_gdb' a symbolic link to scripts/gdb/vmlinux-gdb.py > > is created. Currently 'os.path.dirname(__file__)' does not generate > > the absolute path to scripts/gdb resulting in the following: > > > > (gdb) source vmlinux-gdb.py > > Traceback (most recent call last): > > File "scripts/gdb/vmlinux-gdb.py", line 25, in <module> > > import linux.utils > > ModuleNotFoundError: No module named 'linux' > > So I recently moved to a new machine, and lost my previous .gdbinit. > > I've re-added: > add-auto-load-safe-path /path/to/linux/ > > to my new ~/.gdbinit. > > Upon startup, lx-dmesg and friends aren't available. > > If I try: > (gdb) source scripts/gdb/vmlinux-gdb.py > Traceback (most recent call last): > File "scripts/gdb/vmlinux-gdb.py", line 25, in <module> > import linux.utils > ModuleNotFoundError: No module named 'linux' > > Which is exactly the error claimed to be fixed by > commit b99695580bfc ("scripts/gdb: ensure the absolute path is generated on initial source") > even though I have b99695580bfc, which is how I found this thread to > reply to. > > (gdb) show auto-load safe-path > List of directories from which it is safe to auto-load files is $debugdir:$datadir/auto-load:/path/to/linux/. > > $ gdb-multiarch --version | head -n1 > GNU gdb (Debian 12.1-3) 12.1 > $ python3 --version > Python 3.10.8 > > I've also RTFM @ > Documentation/dev-tools/gdb-kernel-debugging.rst > though perhaps there's something I've missed? > > $ grep -rn GDB_SCRIPTS .config > 4162:CONFIG_GDB_SCRIPTS=y > > This definitely has worked in the past for me, on my previous > workstation. > > (gdb) show configuration > ... > --with-python=/usr (relocatable) > --with-python-libdir=/usr/lib (relocatable) > ... > (gdb) apropos lx > (gdb) > > No warnings from GDB either about the autoload path not being set. > Running gdb in my top level kernel sources. > > Am I holding it wrong? > > Any tips on how to go about debugging this?
PEBKAC; looks like I was building `vmlinux` and not `all`. D'oh!
> > > > > This patch ensures that the absolute path to scripts/gdb in relation to > > the given file is generated so each module can be located accordingly. > > > > Signed-off-by: Aaron Tomlin <atomlin@redhat.com> > > --- > > scripts/gdb/vmlinux-gdb.py | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py > > index 4136dc2c59df..3e8d3669f0ce 100644 > > --- a/scripts/gdb/vmlinux-gdb.py > > +++ b/scripts/gdb/vmlinux-gdb.py > > @@ -13,7 +13,7 @@ > > > > import os > > > > -sys.path.insert(0, os.path.dirname(__file__) + "/scripts/gdb") > > +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)) + "/scripts/gdb") > > > > try: > > gdb.parse_and_eval("0") > > -- > > 2.34.3 > > > >
-- Thanks, ~Nick Desaulniers
| ![\](/images/icornerr.gif) |