From: hm@hcshh.hcs.de (Hellmuth Michaelis)
Newsgroups: comp.unix.bsd
Subject: [386BSD] gdb patch for using gdb with coredumps
Keywords: 386bsd gdb patch coredump
Date: 22 Jan 93 07:42:27 GMT
Organization: HCS GmbH, Hamburg, Europe


[I'm posting this for Joerg Wunsch, who is in the moment without news
 access. Please direct all questions, suggestions, flames etc. to him,
 he can still be reached via mail as joerg_wunsch@tcd-dresden.de or
 joerg@sax.de or joerg@ref.tfs.com or wutcd@hadrian.hrz.tu-chemnitz.de.
 Thank you! hellmuth]


Hi netters,

when working with GDB, an annoying bug occurs when debugging core
dumps. GDB always complains about an unreadable stack region if
one attempts to grab out any stack data (e. g. with the ``where''
command). I found there's an error in config/i386bsd-dep.c:
the stack top is reset during `exec_file_command()' to zero
[and you'll always have to execute this command if you wanna
debug something]. I've managed the function `core_file_command()'
to set it to a reasonable value before reading the core file, so
everything works fine. Btw, the `reasonable value' is offset for
MAXSSIZ from the constant named USRSTACK (in /usr/include/machine/
vmparam.h) - I suspect there's still a mistake in /sys/kern/kern_execve.c
which causes this offset to each user program. But don't bother
with that, it doesn't harm very much (for now).

To get GDB compiled, you'll have to symlink all /sys/vm/*.h
files into (existing) /usr/include/vm directory - someone forgot
this.

When working with kgdb in analyzing kernel core dumps, I found
it useful to be able to set an arbitrary stack frame to something
I guess it could be a stack frame. I've extended the existing hooks
in GDB sources, so it can now be compiled with a macro ``FRAME_
SPECIFICATOIN_DYADIC'' defined. This allows a third form of the
frame command:

	frame <new_framepointer> <new_programmcounter>

resulting in a new frame (for GDB's idea) being created and making
it the top one. A general recipe for analyzing kernel core dumps looks
like:

	% cd /sys/compile/YOURMACHINE
	% compile what you feel necessary with `-g' Option
	% size 386bsd; size /var/crash/system.NN should report
	  identical section sizes (though 386bsd would be larger)
	% gdb -k 386bsd /var/crash/ram.NN
	(kgdb) up 2
	[ somewhere in trap() ]
	(kgdb) print/x frame
	[ shows you the register contents when system trapped ]
	(kgdb) print/x eva
	[ shows you i386's CR2 contents - useful on vm_fault's ]
	(kgdb) frame frame.tf_ebp frame.tf_eip
	[ That it is! Now your stack is the stack of faulting function;
	look whatever you want to find the failure. e.g.:]
	(kgdb) info args
	[ ... ]
	(kgdb) info locals
	[ ... ]
	...

		Good look!
		J"org

Aah, the patch is built to fit into Terry's patchkit. Put it into
/patch/inbound, and continue as you used to do. Maybe someone would
include it ``officially'' sometimes.

begin 644 patchjw003.tar.Z
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
'&9[B.9Y7`9S(
`
end
-- 
>>>>>>> J"org Wunsch <<<<<<< : joerg_wunsch@tcd-dresden.de
If anything can go wrong...  : [...!uunet]!mcsun!unido!textild!joerg_wunsch
     .o .o                   : alias: joerg@sax.de, joerg@ref.tfs.com,
       <_      ... IT WILL!  :        wutcd@hadrian.hrz.tu-chemnitz.de


-- 
hellmuth michaelis    HCS Hanseatischer Computerservice GmbH   hamburg, europe
hm@hcshh.hcs.de              tel: +49/40/55903-170         fax: +49/40/5591486
Newsgroups: comp.unix.bsd