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