Re: Richtig debuggen, aber wie?

From: Greg 'groggy' Lehey <grog(at)freebsd.org>
Date: Wed, 5 Mar 2003 10:59:48 +1030

On Tuesday, 4 March 2003 at 10:46:42 +0100, Ulrich Spoerlein wrote:
> Moin,
>
> mal wieder eine Frage zum debuggen, denn ich haenge schon wieder.
>
> Durch WINE habe ich herrausbekommen, das sich mein System beim Versuch
> die Soundkarte auf 96kHz zu stellen in einer Endlosschleife in ioctl()
> festhaengt. Mit gdb sieht das so aus:
>
> [...]
> setting sampling rate to 96000
> ^C
> Program received signal SIGINT, Interrupt.
> 0x2809da8a in ioctl () from /usr/lib/libc.so.4
> (gdb) bt
> #0 0x2809da8a in ioctl () from /usr/lib/libc.so.4
> #1 0x804871a in main () at oss-test.c:36
> #2 0x8048502 in _start ()
> (gdb)
>
> Dann habe ich libc.so mit -g neue kompiliert und unge'strip'ped
> installiert, in der Hoffnung ich krieg irgendeine Zeilennummer oder eine
> for/while Schleife zu sehen an der es haengt. Nur leider sieht die
> Ausgabe mit debug-libc genauso aus.
>
> Wie geht's also weiter?

Zurück in main():

(gdb) fin Zurück
(gdb) l mal ein bisschen 'rumschauen
(gdb) p $eax Rückgabewert anschauen
(gdb) p errno Und ggf. errno

Interessant ist natürlich, was das für ein ioctl-Wert übergeben wird.

Theoretisch ist möglich, dass fin nicht funktioniert. In dem Fall
kannst Du mit 'f 1' in den main-Stackframe 'rumschauen, Rückgabewerte
aber logischerweise nicht anschauen.

Greg

--
When replying to this message, please copy the original recipients.
If you don't, I may ignore the reply or reply to the original recipients.
For more information, see http://www.lemis.com/questions.html
See complete headers for address and phone numbers

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 05 Mar 2003 - 01:29:31 CET

search this site