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