Hallo C Cracks,
nein, ich wildere nicht in eurem Teich C ist mein Ding nicht, für einen Gelegenheitsprogrammierer ein wenig zu heavy.
Aber folgenes Problem mit einem C Programm plagt mich, und deshalb brauche ich ein paar Wegweiser in die richtige Richtung.
Ich habe einen freien Time Daemon (ntpd) mit einer seriellen GPS Uhr unter Windows 2003 im Einsatz. Ntpd ist Open Source (www.ntpd.org), und es gibt (was sich jetzt rächt) ein fertig compiliertes Paket für Windows zum Download.
Nun macht das Teil auf einer Maschine manchmal zicken. Er verliert tagelang die Verbindung zur GPS Uhr, müllt das Eventlog mit Meldungen zu, fängt sich dann wieder, und versagt dann wieder. Ich vermute Timing-Probleme mit der seriellen Schnittstelle, da ich keine Regelmäßigkeit bei den Ausfällen feststellen kann. Auf einigen anderen Maschinen funktioniert der Daemon dagegen klaglos.
Aus dem Quellcode des Treibermoduls für GPS Uhren (refclock_nmea.c) konnte ich nicht viel erkennen. Aber da wären jede Menge tolle Abschnitte der Form
#ifdef DEBUG
if (debug)
printf(„nmea: gpsread %d %s\n“, rd_lencode,
rd_lastcode);
#endif
zu finden. Da liegt für die Fehlersuche also förmlich eine Goldmine vor meinen Augen, aber ich weiß nicht, wie ich den Goldschatz heben muss. Soweit ich mich (dunkel) an einige C Gehversuche in den 80-ern erinnern kann, müsste ich ein Symbol (?) DEBUG definieren (wie, wo, wie geht das …), und das Programm dann durch einen Compiler jagen (welchen … der Quellcode scheint mit den Compilern, die ich rumfliegen habe (Micoroft Visual Studio C++), nicht ohne Weitres kompatibel, und dann eine Variable „debug“ zusätzlich auf „true“ setzen. Wie das geht werde ich wahrscheinlich im Quellcode nachlesen können, sobald ich die Spur aufgenommen habe, wo eigentlich das Programm beginnt und wo es endet. Gab es da nicht mal so was wie ein Makefile? Egal.
So bin ich irgendwo in der Mitte des Quellcodes eingestiegen und muss mich von da in Richtung der Hauptroutine kämpfen, da werden wohl (vermute ich) Kommandozeilen oder Konfigurationsdateien gelesen, und da würde ich erwarten, dass irgendwo die „debug“ Variable initial gesetzt wird, und dann sehe ich ja, wie sie zu aktivieren ist.
So, und jetzt die dummen Fragen.
- Welchen Compiler muss ich besorgen um das Teil zu kompilieren? Kann ich es (Hoffnung keimt auf …) eventuell sogar in Visual Studio zum Laufen bekommen und dann (oh welche Erleichterung wäre das …) schrittweise im Debugger steppen?
Danke für Wegweiser …
AL.