Hi, ich nutze µVision und den c164ci. Programmiert und debuggt wird über die RS232 mit dem Debugger von Keil. Ich habe nun das Problem, das der C164 irgendwann stehenbleibt, und ich nicht die Stelle finden kann. Debuggen geht halt schwer, da keine echte Jtag vorhanden ist. Es werden Daten per rs232 empfangen ausgewertet, und bearbeitet. Printf geht auch nicht an allen stellen, da der Debugger ja über die rs232 läuft. Per signlestep schmiert der c164 nach nem rets in der seriellen routine ab, aber das ist vermutlich dem seriellen debuggen geschuldet. Hat wer ne Idee, wie ich vorgehen könnte, mir fällt langsam nichts mehr ein :(. thnx SiO2
Du kannst z.B. einen Tracepuffer anlegen, in den Du eine Kennung schreibst, die die Stelle im Code eindeutig repräsentiert und nach dem Abschmieren die Mühle zurücksetzen und dann den Tracepuffer ansehen. Der T. kann im einfachsten Fall ein einzelnes int sein, in den Du den Wert des _LINE_-Macros schreibst. Eine komfortablere Version wäre ein Puffer, der viele Werte speichern kann. Für das Schreiben des Tracepuffers schreibst Du Dir ein Macro, z.B. int LastLine = -1; #define TRACE() LastLine = LINE und setzt Macroaufrufe zunächst mit relativ großem Abstand in Deinen Code und startetst einen Test. Dabei erhälst Du die letzte TRACE-Zeile, die noch durchlaufen wurde. In einem Verfeinerungsschritt instrumentumentierst Du den Bereich zwischen dem letzten erfolgreichen TRACE() bis zum nächsten enger, usw., bis Du die Stelle gefunden hast. Voraussetzung dafür, daß das Verfahren anwendbar ist, ist natürlich, daß Dein Rechner einen Speicherbereich hat, der beim Rücksetzen nicht überschrieben wird.
hast du genug ram? liegt der Monitor im internen ram? hatte auch mal probleme beim debuggen (beim C167, aber ist ja +/- das gleiche), wenn die Monitorkofiguration nicht exakt stimmt, tretten genau solche effekte auf wei du beschreibst, würd als erstes mal da suchen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.