Cpp Programmierung

Aus Physik
Zur Navigation springen Zur Suche springen

Qt

Eine Klassenbibliothek und Entwicklungsumgebung für Programmierung graphischer Benutzeroberflächen.

Debuggen von C/C++ Programmen

Besonders die Speicherzugriffsfehler können schwer zu finden sein. Es gibt aber Tools mit denen die Fehlersuche wesentlich schneller und weniger frustrierend verläuft.

valgrind

Valgrind ist ein Programm, das die ganze CPU emuliert, es verfolgt jeden einzelnen Zugriff auf den Speicher, den das zu testende Programm macht. Ungültige Speicherzugriffe (z.B. über das ende eines Arrays hinausschreiben) werden auf der Konsole ausgegeben und können im Quellcode sofort ausgebessert werden. Die Verwendung ist ganz einfach:

  $ valgrind <das_zu_testende_programm>

Die Meldungen von valgrind sind etwas kryptisch, es wird aber alles klar, wenn man sich das kurze howto durchliest. Das zu testende Programm muss natürlich mit dem flag -d (fürs debuggen) kompiliert sein. Da die cpu emuliert wird, läuft das programm ungefähr 20 mal langsammer. Sollte für das testen aber kein Problem sein. Valgrind ist im Computerraum natürlich installiert.


Plotten von Daten

Es gibt mehrere Möglichkeiten Plots zu erzeugen:

  1. Speichern der Daten in Files, laden in Matlab und Plots erzeugen
    • Vorteil: gute, alte Matlab-Plots, Plotbefehle sind (mehr oder weniger) bekannt
    • Nachteil: umständlich
  2. In C die Berechnungen und Funktionen, mit denen man die Daten erhält, schreiben.
    Dann aus Matlab heraus die Funktionen aufrufen und die erhaltenen Daten plotten
    • Im Prinzip wie 1. Methode, man spart sich den Zwischenschritt über die Files
    • Wie man C-Funktionen aus Matlab startet, findet man hier
    • Vorteil: Ausgaben können in einem Schritt erstellt werden
    • Nachteil: mann muss zusätzlich die Funktionalität bereit stellen, mit deren Hilfe die Daten ins Matlab kommen
  3. Verwenden des C-Interfaces von Gnuplot
    • Infos dazu unter Computer_Benutzung#Visualisierung
      Link zum Projekt (alles Nötige steht dort zum Download)
    • Vorteil: einfach!
    • Nachteil: man muss sich in die Plotfunktionen einlesen (geht aber unheimlich schnell, da es wie die Matlab-Plots funktioniert, außerdem ist gute Doku vorhanden)
    • Nachteil: es sind nicht alle Matlab-Plots verfügbar, aber für die meisten Anwendungen reicht es aus. Es sind auch 3D-Erweiterungen erhältlich!

Die schnellste und einfachste Möglichkeit ist, sofern man nicht Matlab-Plots haben muss, sicherlich die 3. Variante.


Links