Debugger: Die Grundlagen

Der Entwicklungscode für ein Softwareprojekt folgt tendenziell einem weitestgehend standardmäßigen Verfahren: 1) Sie schreiben den Quellencode, üblicherweise in einer ausgereiften Programmiersprache wie C++ oder Java, bei der verständliche Sprache und Anweisungen verwendet werden. Bei einem Großprojekt wird der Code normalerweise in mehreren Modulen geschrieben, um das Verständnis zu erleichtern. 2) Mithilfe eines Software-Compilers, der Ihren menschenlesbaren Text in Objektcode übersetzt, der vom Mikrocontroller ausgeführt werden kann, kombinieren Sie die Module zu einem einzigen großen Code. 3) Sie laden Ihren Objektcode in den Computerspeicher und beginnen mit der Ausführung Ihrer Software. 4) Es funktioniert nicht.

Machen Sie sich keine Sorgen, das ist völlig normal. Genau genommen enthält kommerzielle Unternehmenssoftware selbst nach der Freigabe normalerweise 20 bis 30 Fehler bzw. Bugs pro Tausend Codezeilen. „Schwerwiegende“ Fehler führen tatsächlich dazu, dass das Programm nicht mehr ausgeführt wird. Bei nicht schwerwiegenden Fehlern kann das Programm ausgeführt werden, jedoch entsprechen die Ergebnisse nicht den Erwartungen.

Was ist also der nächste Schritt, wenn das Programm nicht das tut, was Sie von ihm wollen? An dieser Stelle spielt eine andere entscheidende Softwarekomponente, der Debugger, eine große Rolle.

Debugging ist der Prozess, bei dem Fehler im Code eines Computerprogramms lokalisiert und behoben werden. Das Debugging eines Programms besteht darin, mit einem fehlerhaften Codeabschnitt zu beginnen, die Quellen möglicher Probleme zu isolieren und dann zu reparieren.

Ein Debugger ist ein Programm, in dem ein anderes Programm (d. h. Ihr Code) ausgeführt wird, was es Ihnen ermöglicht, den Code in einem bestimmten Maß zu kontrollieren, während er ausgeführt wird, und bestimmte Elemente zu untersuchen, sobald etwas nicht funktioniert.

Grundlegende Funktionen eines Debuggers

Wenn Sie ein Programm ausführen, das Fehler enthält, gibt es verschiedene Maßnahmen, die Sie unter Umständen ergreifen sollten:

  • Welche Anweisung bzw. welchen Ausdruck führte das Programm gerade aus, als der schwerwiegende Fehler auftrat?
  • Falls der Fehler beim Ausführen einer Funktion auftrat: Welche Programmzeile enthält den Aufruf dieser Funktion?
  • Welche Werte nehmen die Programmvariablen (einschließlich Parameter) zu einem bestimmten Zeitpunkt während der Ausführung des Programms ein?
  • Wie lautet das Ergebnis der Auswertung eines bestimmten Ausdrucks zu einem beliebigen Zeitpunkt während der Programmausführung?
  • Welche Anweisungssequenz wurde tatsächlich in einem Programm ausgeführt?

Für diese Funktionen ist es erforderlich, dass Sie in der Lage sind, Programmdaten zu überprüfen, eine Liste der aktuell ausgeführten Funktionen abzurufen, Haltepunkte an den Stellen zu setzen, an denen die Ausführung des Programms unterbrochen wurde, um eine Überprüfung der entsprechenden Daten zu ermöglichen, und schrittweise die Anweisungen eines Programms auszuführen, um sich ein Bild davon machen zu können, was dann eigentlich passiert.

Fast alle Debugger arbeiten auf der symbolischen bzw. der Quellencodeebene. So erhalten Sie einen tieferen Einblick in die Betriebsweise des ursprünglichen Codes. Im Wesentlichen erwecken sie den Anschein, dass Sie in Ihrem Quellprogramm die C++- bzw. Java-Anweisungen ausführen und nicht den Maschinencode, in den sie eigentlich übersetzt wurden.

Beim Debuggen des Codes ist es normalerweise erforderlich, mehrere Elemente gleichzeitig zu untersuchen: den Code, der gerade ausgeführt wird, die Hardware-Register im Mikrocontroller, spezifische Speicherorte und Haltepunkte. Von daher bietet es sich an, mehrere Fenster im GUI-Format aufzurufen. Abbildung 1 unten zeigt eine Bildschirmaufnahme von einem Debugger mit entsprechenden Anmerkungen zur Hervorhebung der verfügbaren Funktionen.

 

Abbildung 1: Ein Debugger-Bildschirm für die Eclipse-IDE mit mehreren Fenstern und den entsprechenden Funktionen. (Quelle: Rice University)

Hardware-Support für Debugger

In manchen Fällen gibt es ein weiteres Programm – den Emulator – das den Mikrocontroller selbst simuliert. Es ist dann also keine echte Hardware erforderlich. Bei eingebetteten Systemen führen Sie Ihren Code jedoch normalerweise auf dem Entwicklungskit für den Mikrocontroller oder der für die Produktion vorgesehenen Platine aus.

Die meisten Mikrocontroller umfassen Funktionen, die speziell auf ein einfacheres Debugging ausgelegt sind, wie Hardwareunterstützung, um ein Programm Anweisung für Anweisung durchzugehen, spezielle Testmodi und Unterstützung für Haltepunkte.

Software-Werkzeugpakete

In vielen Fällen werden Debugger – zusammen mit anderen Werkzeugen zur Softwareentwicklung – in einem Gesamtpaket vereint, das als integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) bezeichnet wird. Viele Mikrocontroller-Hersteller bieten IDEs für ihre Produkte, sie können aber auch über Drittanbieter und sogar die Open-Source-Gemeinschaft bezogen werden. Die in Abbildung 1 gezeigte Eclipse-IDE ist ein Open-Source-Produkt.

IDEs sind entweder eigenständige Produkte oder (wenn sie von einem Hersteller stammen) mit Entwicklungshardware für einen bestimmten Mikrocontroller gebündelt. Für einen einfacheren Start bietet Arrow eine Auswahl an Debuggern, Entwicklungswerkzeugen und IDEs von zahlreichen Herstellern.

Neue Beiträge

Leider ergab Ihre Suche kein Ergebnis

Aktuelles über Elektronikkomponenten­

Wir haben unsere Datenschutzbestimmungen aktualisiert. Bitte nehmen Sie sich einen Moment Zeit, diese Änderungen zu überprüfen. Mit einem Klick auf "Ich stimme zu", stimmen Sie den Datenschutz- und Nutzungsbedingungen von Arrow Electronics zu.

Wir verwenden Cookies, um den Anwendernutzen zu vergrößern und unsere Webseite zu optimieren. Mehr über Cookies und wie man sie abschaltet finden Sie hier. Cookies und tracking Technologien können für Marketingzwecke verwendet werden.
Durch Klicken von „RICHTLINIEN AKZEPTIEREN“ stimmen Sie der Verwendung von Cookies auf Ihrem Endgerät und der Verwendung von tracking Technologien zu. Klicken Sie auf „MEHR INFORMATIONEN“ unten für mehr Informationen und Anleitungen wie man Cookies und tracking Technologien abschaltet. Das Akzeptieren von Cookies und tracking Technologien ist zwar freiwillig, das Blockieren kann aber eine korrekte Ausführung unserer Website verhindern, und bestimmte Werbung könnte für Sie weniger relevant sein.
Ihr Datenschutz ist uns wichtig. Lesen Sie mehr über unsere Datenschutzrichtlinien hier.