tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

AW: AW: Gdb and lkm modules with NetBSD-5



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



Home | Main Index | Thread Index | Old Index