[C] printf trager dan exception

Pagina: 1
Acties:

  • mazzzterrr
  • Registratie: December 2000
  • Laatst online: 30-08-2025
In mijn C-programma krijg ik eenfloating point exception, dus ik probeerde uit te zoeken waar die vandaan komt. Nu heb ik overal printf neergezet zodat ik kan zien waar het probleem zich voordoet (dacht ik) echter het probleem komt voor tussen het eind en het opnieuw beginnen van een while-loop.

Die while-loop kan alleen afgelopen zijn als er binnen de loop een waarde wordt verzet en in het geval van die exception wordt daar dus niks aan verandert. In mijn code is de 1e regel dus printf en de 2e roept iets aan uit een andere file.

Nu is mijn vraag: Zou het zo kunnen zijn dat hij al naar de 2e regel springt voordat de printf op het scherm staat??? En het dus in die 2e regel fout gaat in plaats van de eerste??? Mij lijkt dat die floating point exception ook via een soort printf op het scherm verschijnt en hij dus nooit de eerste in kan halen.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

2 woorden: buffered io

Ja, het kan dus dat je programma klapt voordat de buffer op het scherm staat. Gebruik de setvbuf () functie om 'm op unbuffered te zetten.

Bovendien, met een zinnige debugger kun je toch sowieso al precies de locatie van de exception bepalen :?

Of bedoel je dat het er in de verkeerde volgorde op komt? Dat kan in principe niet als er in beide gevallen van printf gebruik wordt gemaakt. Maar ik vind je omschrijving maar wat vaag, ik snap er niet veel van. Misschien heb je een code voorbeeld?

[ Voor 33% gewijzigd door .oisyn op 11-12-2003 17:27 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mazzzterrr
  • Registratie: December 2000
  • Laatst online: 30-08-2025
Het komt niet altijd voor...alleen bij een hevige datastroom. De debugger is deze: i386-linux to arm-linux C/C++ cross compiler, dus waarschijnlijk ziet die debugger het ook niet.
Maar dan moet ik het dus ergens anders in de code gaan zoeken in plaats van in de while-loop.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
fprintf(stderr) is ongebuffered.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein