embedded power for your project embedded power for your project

| Home | Software | Services | Support | Contact |

 Embedded Prozessor
   8-Bit Prozessoren
   16-Bit Prozessoren
   32-Bit Prozessoren
   64-Bit Prozessoren
   ARM
   DSPs
   FPGA
   Intel
   MIPS
   PowerPC
 Tool Information
   BDM/JTAG tool
   Emulator
   Hardware design
   Logikanalysator
   Eval Boards
   Simulator
   Compiler
   Real Time OS
   Software Tools
   Debugger
 Services
   Consulting
   Support
   Systemdesign
   Verkauf
   Links
   Literatur

 embedded
    software debug technology

Software-Debugger

Kein Programmierer wird immer wieder auf Anhieb absolut fehlerfreien Code schreiben können, so entsteht die Frage nach einem Tool, um Fehler in der Programmierung aufzuspüren. Es gibt Methoden, z.B. printf, um Variablen und Zustände nach aussen zu führen, wesentlich effizienter und eleganter ist der Einsatz eines Fehlersuchwerkzeuges, dem sogenannten Source Code Debugger. Ein Sourche Code Debugger versteht den Sprachsyntax (Hochsprache, C/C++, Ada, Java, etc.) des zugrundeliegenden Programmes und stellt die Entsprechung zum auf ihrem Zielsystem eingesetzten Maschinencode (Assembler) her.

Sie können relativ einfach, denn die meisten modernen Entwicklungssystem stellen hierfür eine integrierte Entwicklungsumgebung zur Verfügung, den Code verändern und mit Einzelschritten oder gesetzten Kontrollpunkten auf ihrem Zielsystem überprüfen.

In der Theorie wäre der Einsatz eines Interpreters vorteilhaft, denn in diesem Stadium der Entwicklung kommt es weniger auf schnelle Ausführung als auf fehlerfreien Codeablauf an. Aber die effizienten und damit populären Sprachen für den Einsatz auf embedded Systemen sind C und Assembler, seit einigen Jahren auch C++ und Java, in bestimmten Bereichen Ada und andere Sprachen. Diesen Sprachen gemein ist der Einsatz eines Compilers, der eine schrittweise Vorgehensweise bei der Codeentwicklung vorschreibt, die sogenannten edit-compile-load-debug Zyklen.

Nur gut, wenn all diese Aktionen von einer Benutzeroberfläche durchgeführt werden können, bis vor wenigen Jahren waren es verschiedene Tools die mit verschiedenen Benutzerinterfaces eine lange Lernkurve bei Anwendern und entsprechende Verzögerung in Projekten nach sich zogen. Integrierte Produkte machen es Einsteigern und gelegentlichen Benutzern einfach, sich mit der Toolkette zurechtzufinden.

Software Debugger bieten folgende Basisfunktionen an:

  • Einzelschritt-Ausführung von Assembly- und Hochsprachencode
  • Setzen von Haltepunkten (Breakpoints) an definierten Stellen in Hochsprache oder Maschinencode
  • Anzeigen von Variablenwerten, logischen Ausdrücken, Speicheradressen und CPU-Registern

Die meisten Source Code Debugger haben darüber hinaus vielfältige Funktionen, um die Entwicklungsarbeit und Fehlersuche zu beschleunigen:

  • Verschiedene Einzelschritt-Modi mit Überspringen von Funktionen und Modulen
  • Pseudo-Trace zur Programmablaufverfolgung
  • Simulator zur Erprobung von Code ohne Hardware
  • Registertool zur Erzeugung von Start-up Code
  • Konditionelle Breakpoints und Counter um nur bei bestimmter Bedingung anzuhalten
  • Datengetreue Anzeige von Speicherinhalten
  • Gemischte Anzeige von Hochsprachen Source Code und original Maschinencode vom Zielsystem
  • Anzeige von Informationen eines Echtzeit-Betriebssystems
  • Einsatz von Task-abhängigen Breakpoints / Variablenanzeige

Das Debuggen, die Fehlersuche, ist wie Detektivarbeit und Erfahrung mit Fehlerszenarien hilf wesentlich zur schnellen Eingrenzung von Problemen. Manchmal spielt ein embedded System viele Tage bis zum Zusammentreffen gewisser Datenwerte oder Zeitbedingungen. Solche Fehler durch klassisches Debugging zu finden kann langwierig und teuer sein. Dafür kommen andere Werkzeuge zum Einsatz: Code-Profiler und Code-Analyse.

Code Profiler können auch zum Tunen von Code verwendet werden, d.h. verarbeitungsintensive Bereiche ausweisen, die zur schnelleren Abarbeitung optimiert werden. Oft ist es so, daß 10% des Codes 90% der Verarbeitungszeit beanspruchen.

Code-Analyse kommt of versteckten Fehlern auf die Spur, wenn Konstruktionen, die zwar formal vom Compiler akzeptiert werden, dann aber in der Ausführung kritisch werden können oder die problematisch in anderer Hinsicht sein können.

Gerade Pointer in C sind ein Einsatzgebiet für die Code-Analyse. Wenn Pointer in ungültige Datenbereiche zeigen, wenn ein Stack-Pointer unzureichend aktualisiert wird, wenn ein Speicherbereich weiterhin genutzt wird obwohl der entsprechende Heap Pointer bereits gelöscht wurde. Manchmal erkennt die Hardware einen Fehler in diesem Bereich und das System stoppt dann mit einem Bus-Error oder Segmentation-Fault.

Darüber hinaus gibt es weitere Tools, die oft in Verbindung mit den bereits beschriebenen Code Analyse, Debugger, Profiler, auch Funktionen der Qualitätssicherung realisieren, wie Einhaltung von Codierrichtlinien, Formattierung von Source Code Text, Übernahme von Kommentaren in Projektdokumentation, usw.


Vielen Dank für Ihr Interesse und stellen Sie uns weitere Fragen. Wir freuen uns auf Ihr Embedded Projekt!

Mit freundlichen Grüßen vom Embedded Experten

background:

Software tools are plenty and manifold. How to find your way through the maze of vendors and different types of tools.

Software debugger

This is the tool where a lot of time is spent when time is at a premium. When your project is running late and you need the debugger to iron out the last few bugs, then every bit of productivity the debugger offers is as good as gold.

Modern debuggers allow multiple views on different target situations, some offer multi-target debugging, even with different architectures - you ever tried to debug DSP with PowerPC coprocessor? Many debugger offer powerful Register and Memory visualization, as well as Generation of startup code, integrated simulator and many more

Software analyzer

With the move to more complex embedded systems the code analyzing tools become more important.

debugger debugging Software engineering multi-task multi-target

| Home | Products | Services | Support | Impressum |

Embedded Systems Technoloy Center 2006 - Alle Marken, Warenzeichen und Handelsnamen sind Eigentum der jeweiligen Inhaber.

© BK media systems 2002, 2016.

All trademarks and registered names are property of their respective owners. German law requires Impressum