[C++] Socket debugging: recording/playback

Pagina: 1
Acties:

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Voor het debuggen van een IRC-achtige server ben ik op zoek naar een library die alle socket calls kan recorden zodat ik later in de debugger een bug eenvoudiger kan opsporen door alle calls weer af te spelen waardoor ik geen echte clients nodig heb.

Is er zo'n library?
Als die er niet is schrijf ik er zelf wel een.

[ Voor 19% gewijzigd door Olaf van der Spek op 31-05-2003 14:09 ]


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 22-08 17:28

alienfruit

the alien you never expected

Wat is met met een tcp/ip viewer :S ?
zou niet weten of er specifiek een library voor is, maar het lijkt me dat dumps van de packets in een log bestand wel verdoende is, en logging libs zijn er wel genoeg :)

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Met een dump kun je de app toch niet onder een debugger draaien en kijken wat er mis ging?

Je kunt hooguit kijken wat er net voor de crash gebeurde, maar of je daar de oorzaak van de crash mee kunt achterhalen is niet waarschijnlijk.

[ Voor 45% gewijzigd door Olaf van der Spek op 31-05-2003 20:50 ]


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Is dit wat: TCPdump/libpcap? Alles weer 'afspelen' kan de tool waarschijnlijk niet, maar dat moet niet zo heel vervelend zijn om te maken op basis van een eerder gemaakte dumpfile.

FireFox - neem het web in eigen hand


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ik dacht meer aan een library die zo mee te compilen was en die alle calls naar socket functies onderschepte.
Libpcap is waarschijnlijk niet geschikt.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Check deze pagina
Hij beschrijft een techniek om API function calls te registreren, en toevallig doet ie dat als voorbeeld bij de winsock functies. Je kunt de sourcecode downloaden.

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.


  • Onno
  • Registratie: Juni 1999
  • Niet online
Misschien wel handig om te vermelden onder welk besturingssysteem je al dit moois wilt doen? In de meeste unix smaakjes heb je in elk geval wel iets als truss of strace waarmee je system calls kunt tracen.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Bedankt .oisyn.
Recording wil ik doen onder Linux en playback onder Windows.
Maar omdat ik de code van mijn eigen server heb is het toch veel eenvoudiger dit binnen mijn eigen programma aan te pakken?
Dan heb ik niks met ingewikkelde hooks of DLLs te maken.

Ik denk dat ik zelf maar wat ga schrijven.

Verwijderd

Zoals hierboven al aangeven staat: strace
Hiermee kan je onder linux alle system-calls loggen en ook alle data die door de filedescriptors reist. Met een beetje handig instellen (zodat je niet te veel irrelevante informatie krijgt) kan je een hoop te weten komen.

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Met strace is het denk ik gelukt. Ik riep FD_ISSET aan met een al gesloten socket. In Win32 gaat dit goed, in Linux schijnbaar niet.
Pagina: 1