Linuxcon Europe: Multicore-Debugging mit GDB und CDT

Das Framework Multicore Visualizer View stellt Mehrkernprogramme beim Debuggen grafisch dar. Die Kästchen stehen für die Cores, die Punkte für Prozesse.

Auf der Linuxcon in Prag hat Dominique Toupin von Ericsson neue Debugger-Features für die Arbeit mit Mehrkernprozessoren präsentiert.

“Wer nicht mit Multicore-Prozessoren umgehen kann, ist heutzutage aufgeschmissen” begann Toupin, Developer Tool Manager, seinen Vortrag. Dabei gehe es nicht nur um Chips mit 100 oder 256 Kernen, Mehrkerntechnologie sei selbst in Mobilgeräten vertreten. Die Komplexität beim Debugging steige bei mehreren Kernen stark an, und das erfordere neue Tools.

Der Referent zeigte in seinem Vortrag, was die CDT Multicore Debugging Working Group bei Eclipse sowie die GDB-Entwickler in jüngster Zeit für Mehrkernprogrammierer getan haben. Dazu gehört beispielsweise die Möglichkeit, nur einzelne Threads eines Programms zu stoppen, während die anderen weiter laufen (Non-Stop Debugging). Ebenfalls neu ist das Multi-Process-Debugging, bei dem sich ein einziger GDB-Server auf der Target-Maschine mit mehreren Prozessen verbinden kann. Das hält den Ressourcenverbrauch auf dem Target gering. Ein Feature, das beispielsweise die Entwickler des Chrome-Browsers nutzen, heißt Auto-attach on Fork: Der Debugger verbindet sich automatisch mit einem neu geöffneten Browser-Tab, das als eigener Prozess läuft.

Daneben findet der GDB-Entwickler neue Möglichkeiten, Debug-Elemente zu gruppieren. Dank Process Thread Core (PTC) kann er beispielsweise mit dem Kommando “step .34-59” nur die Threads 34 bis 59 steppen, der Befehl “step @2” steppt alles auf dem Core Nummer 2. Daneben kann der Anwender die gebildeten Gruppen benennen und mit ihrem Namen aufrufen. Dieses und andere neue Features gehen laut Toupin im November in GDB ein.

Das Framework Multicore Visualizer View stellt Mehrkernprogramme beim Debuggen grafisch dar. Die Kästchen stehen für die Cores, die Punkte für Prozesse.

Das Framework Multicore Visualizer View stellt Mehrkernprogramme beim Debuggen grafisch dar. Die Kästchen stehen für die Cores, die Punkte für Prozesse.

Die Eclipse-Einbindung von GDB stellt PTC-Gruppen in einer Baumstruktur da. Sie bietet weitere praktische Darstellungsweisen: Mit Hilfe von Pin & Clone lassen sich Prozesse markieren und ihre Eigenschaften vergleichen. Der Multicore Visualizer View treibt die grafische Darstellung noch weiter und dient als Framework für verschiedenerlei Visualisierungen von Multicore-Anwendungen, etwa als Raster mit Cores als Kästchen und Prozessen als Punkte. Dabei ist die grafische Ansicht interaktiv und mit den anderen Eclipse-Komponenten verknüpft. Das Visualizer-Framework ist derzeit nur als Quelltext auf Github erhältlich.

Die CDT-Entwickler haben gleichzeitig versucht, neben GUI-Tools auch die Kommandozeile zu integrieren: Die neue GDB-Konsole in Eclipse kann daher auf die gleiche Debugger-Sitzung zugreifen.

Weitere GDB-Innovationen sind zur Laufzeit eingefügte “printf()”-Aufrufe und Dynamische Tracepoints, die per Jump oder Trap eingefügt werden. Reizvoll, aber rechenintensiv ist das Reverse Debugging, bei dem der Entwickler rückwärts durch den Programmablauf steppen kann. Entwickler dürfen sich laut Toupin noch auf weitere nützliche Features in den kommenden GDB-Releases freuen: Durchsuchen des Speichers, Aufrufen von Funktionen, Scripting mit Python und die Berücksichtigung von betriebssystemspezifischen Details wie geladene Kernelmodule, Sockets und Prozessgruppen.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben