Forum: Mikrocontroller und Digitale Elektronik Hardware- Software Debugging


von Alex H. (Gast)


Lesenswert?

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

von Thorsten (Gast)


Lesenswert?

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

von Alex H. (Gast)


Lesenswert?

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

von Rufus T. Firefly (Gast)


Lesenswert?

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.

von Alex H. (Gast)


Lesenswert?

Danke Rufus,
jetzt hab ich's verstanden.

Gruß Alex

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
Noch kein Account? Hier anmelden.