Hi,
Brian Buhrow wrotes:
> Hello Peter. You're correct. There's been no answer.
> I'd be very interested in the script.
> If you don't mind sharing, I'd love to have it.
o script is attached (igdbdump.sh).
o you must only specifiy
- the kernel (by -N) e.g. -N /kernel.gdb
- the core-file (by -M) e.g. -M /var/crash/netbsd.0.core
- the path to the LKM(s) (by -L) e.g -L /usr/lkm
All files (kernel and LKM(s)) should be compiled with -g
See igdbdump -h or -hh for all options.
o have fun ;-)
o if something goes wrong, try or send us the output of a run with -v
(-v shows some debug-information/steps, maybe this helps)
o btw: we use the same kind of script to profile LKMs (by kgmon/gprof).
but this needs some little changes within the kernel/LKM code too.
best regards
:peter:
> -thanks
> -Brian
> On Nov 18, 10:14pm, "Peter Reimers" wrote:
> } Subject: AW: Gdb and lkm modules with NetBSD-5
> } Hi,
> }
> } Brian Buhrow wrotes:
> } > Betreff: Gdb and lkm modules with NetBSD-5
> } > Hello.=20
> } > I'm trying to debug an lkm module under NetBSD-5. I've built
> } > netbsd with symbols in, and that works great for statically=20
> } > linked modules.
> } > However, I'd like to see the symbols of an lkm in the crash=20
> } > dump. Is there a command to gdb that I can give which will
> } > load the symbols of the loaded modules as well as the
> } > netbsd.gdb file itself?
> }
> } o there was no answer so far - so we assume there is no such gdb =
> } command/script ?
> }
> } o we understand that the problem appears if LKM(s) (loaded
> by modload) =
> } crash
> } the kernel and should then debugged later with gdb on a
> netbsd.N.core =
> } coredump.
> } Right ?
> } Then maybe our solution could help (anyway it may be not
> the easiest =
> } way): =20
> } =20
> } o we run into the same problem with netbsd 3.0 and now 5.0
> } We discovered that the problem is not to add the
> symbols/files (e.g. =
> } <lkm>.o)
> } to the gdb, but to do the 'relocation' to the adress
> where the LKMs =
> } was loaded.
> }
> } o So we solved this by a sh-script (using gdb and ld internally)
> }
> } The script needs:
> } - the netbsd.N.core file
> } - the netbsd.N file (or the netbsd.gdb)
> } - the LKM file(s) (the .o files)
> }
> } Then its
> } a) read the lkm-name and data/code adresses of all loaded
> LKMs out of =
> } the .core file (by a gdb-script)
> } (instead you could use the output of modstat from the
> system - =
> } before it has core-dumped)
> } b) link (ld -R) the netbsd.N against all LKMs found (using =
> } <lkm-name>.o and data/code adresses from a)
> } The result is one! new file with the symbols of the
> kernel and =
> } symbols of all loaded LKMs ... relocated!.
> } c) starts the gdb on the netbsd.N.core file and use the new file =
> } (created by b) for the symbols.
> }
> } At the end, we see LKM symbols within stack-dump and could print =
> } global data-structures of LKMs.
> }
> } It works at least (tested)
> } - for netbsd 3.0, 3.1 and 5.0
> } - for i386 (and i386 Xen/PAE)
> } - for modload/modstat LKMs (we are not sure if/how the new =
> } in-kernel-linking stuff works)
> }
> } o If you are interested ... we could send you this
> sh-script to play =
> } with (not well documented)
> } If not ... sorry for the noise.
> }
> } o If you allready found an easier way .... we are also
> intrested in ;-)=20
> } =20
> }
> } best regards
> } :peter:=20
> }
> }
> }
> --------------------------------------------------------------
> -----------=
> } -------------------------=20
> } TELES AG Informationstechnologien
> } Ernst-Reuter-Platz 8
> } 10587 Berlin
> } Web: www.teles.de <http://www.teles.de>
> }
> --------------------------------------------------------------
> -----------=
> } -------------------------
> } Vorstand: Prof. Dr.-Ing. Sigram Schindler (Vorsitz),
> Richard Fahringer, =
> } Frank Paetsch, Olaf Schulz
> } Aufsichtsrat: Prof. Dr. Walter L. Rust (Vorsitz), Prof. Dr. Radu =
> } Popescu-Zeletin, Prof. Dr. Ralph N. Schindler=20
> } Handelsregister: Amtsgericht Berlin Charlottenburg, HRB 60781 =20
> >-- End of excerpt from "Peter Reimers"
>
>
>
Attachment:
igdbdump.sh
Description: igdbdump.sh