Hallo an alle, ich habe eine allgemeine Frage. Man hört immer von den Begriffen Hardware und Software Debugging, jedoch habe ich nirgends eine Erklärung gefunden(weder in Büchern noch im Internet), was genau der Unterschied ist bzw. was die Vorteile bzw. Nachteile der beiden Debugmöglichkeiten sind. Vielen Dank für die Antworten. Gruß Alex
Hallo, Hardware Debugging ist, wenn der Controller diese Funktion direkt unterstützt. Dazu benötigst du i. d. R. zusätzlich Hardware, die an den Controller angeschlossen wird. Z. B. der In Circuit Debugger von Microchip ist ein zusätzliches Gerät das mit dem PIC verbunden wird und das die Debugginfeatures des PICs nutzt. Darüber kannst du sowohl debuggen als auch flashen. Software Debugging wäre, wenn du z. B. in deiner EIGENEN Software an bestimmten Stellen z. B. über die UART den Wert eines Registers ausgibst. Mit Hilfe eines Terminalprogramms kannst du dir dann auf dem PC diesen Wert ansehen und bekommst so auch eine ungefähre Vorstellung, was in deinem Programm abgeht. Gruß Thorsten
Danke Thorsten, die Antwort war sehr hilfreich und sogar für mich verständlich. Kannst Du oder jemand anders mir vielleicht noch die Vor- bzw. Nachteile nennen. Oder warum ist im Allgemeinen das Hardware Debugging dem Software Debugging vorzuziehen? Oder ist der einzige Unterschied, das man damit flashen kann, es ist jedoch auch mit dem ein oder anderen Software Debugger möglich ein neues Programm in den Flash zu laden. Gruß Alex
Naja, Software Debugging, so wie Thorsten es beschrieben hat, funktioniert nur, solange das Programm nicht völlig in den Wald rennt und keine unvorhergesehenen Ereignisse eintreten. Außerdem wird dadurch das zu testende Programm verändert (da ja an strategischen Stellen Debugausgaben erfolgen müssen), was sowohl Codegröße, Speichernutzung als auch das Laufzeitverhalten beeinflusst und so Programmfehler "zudecken" kann. Auf diese Art und Weise nach Fehlern zu suchen, ist sehr umständlich und ziemlich ineffizient. Übertragen auf die Programmierung auf einem PC entspricht das übrigens der Programmentwicklung ohne eigenständigen Debugger. Hardware-Debugging bedeutet, daß das Programm, egal in welchem Zustand es sich befindet, angehalten werden kann und Speicherinhalte und ähnliches untersucht werden können. Dabei sind -je nach Debughardware- auch sehr "mächtige" Debughilfen wie konditionale Breakpoints möglich: das Programm wird angehalten, wenn eine bestimmte Bedingung zutrifft; wenn beispielsweise eine Speicherzelle einen bestimmten Wert annimmt, unabhängig davon, an welcher Stelle sich das Programm gerade befindet. Damit sind beispielsweise Pointerfehler lokalisierbar. Bei neueren Controllern ist "in circuit debugging" ohne spezielle Emulationshardware möglich; erforderlich ist nur noch ein JTAG-Interface und geeignete Software. Einige AVRs besitzen ein solches Interface; die MSP430-Familie von TI bietet JTAG-Unterstüzung und größere Controller wie beispielsweise die aus der ARM-Familie haben so etwas in der Regel auch.
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.