<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software Dev Blog &#187; Debuggen</title>
	<atom:link href="http://www.software-dev-blog.de/tag/debuggen/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.software-dev-blog.de</link>
	<description>Multicore-Programmierung, Multithreading &#38; Visual Computing</description>
	<lastBuildDate>Thu, 09 Feb 2012 19:54:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Paralleltesten mit Visual Studio: Parallel Debugger Extension</title>
		<link>http://www.software-dev-blog.de/paralleltesten-mit-visual-studio-parallel-debugger-extension/07/2009/</link>
		<comments>http://www.software-dev-blog.de/paralleltesten-mit-visual-studio-parallel-debugger-extension/07/2009/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 08:51:26 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[DE]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Whitepaper]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1097</guid>
		<description><![CDATA[Klar, Microsofts Visual Studio bietet eine erprobte Debugging-Umgebung, mit der sich Anwendungen auf mögliche Fehler untersuchen lassen. Allerdings gilt dies nur für sequentiell programmierte Software, potenziellen Multithread-Problemen kommt man mit diesem Tool nicht auf die Schliche. Hierfür bietet sich ein Tool an, das Teil des Parallel Studio ist und sich Parallel Composer nennt. Teil des [...]]]></description>
			<content:encoded><![CDATA[<p>Klar, Microsofts Visual Studio bietet eine erprobte Debugging-Umgebung, mit der sich Anwendungen auf mögliche Fehler untersuchen lassen. Allerdings gilt dies nur für sequentiell programmierte Software, potenziellen Multithread-Problemen kommt man mit diesem Tool nicht auf die Schliche. Hierfür bietet sich ein Tool an, das Teil des <a title="Happy Birthday, Parallel Studio!" href="http://www.software-dev-blog.de/happy-birthday-parallel-studio/05/2009/">Parallel Studio</a> ist und sich <a title="Mehr Infos zum Parallel Composer" href="http://www.software-dev-blog.de/serie-mit-parallel-studio-anwendungen-multithreaden/02/2009/">Parallel Composer</a> nennt. Teil des Composers wiederum ist die Parallel Debugger Extension, die sich als Erweiterung in die Debugger-Umgebung von Visual Studio &#8220;einklinkt&#8221;.</p>
<p>Die Parallel Debugger Extension weist folgende Hauptmerkmale auf:</p>
<ul>
<li>Das Aufspüren von Data Sharing, also der gemeinsame Datenzugriff mehrerer Threads auf eine identische Speicherzelle. Hierfür sind die Schalter <strong><em>/debug:parallel</em></strong> und <em><strong>/Qopenmp</strong></em> am Anfang des Quellcodes notwendig, die dem Compiler mitteilen, den Sourcecode entsprechend zu kompilieren.</li>
</ul>
<ul>
<li>Mit der Funktion Re-entrant Function Call Detection lässt sich die Anwendung anhalten, sobald zwei Threads gleichzeitig auf ein und dieselbe Funktion zugreifen.</li>
</ul>
<ul>
<li>Der direkte Zugriff auf sämtliche SSE-Register führt zu einem verbesserten Verständnis, was bei der Programmausführung auf Prozessorebene stattfindet.</li>
</ul>
<ul>
<li>Falls beim Kompilieren des Quellcodes der Schalter <em><strong>/Qopenmp</strong></em> gesetzt wurde, hat man per Debugger Extension Zugriff auf sämtliche Datenstrukturen wie Tasks, wartende Tasks, Task-Locks etc.</li>
</ul>
<ul>
<li>Eine mithilfe von OpenMP-Pragmas parallelisierte Anwendung lässt sich mit wenigen Mausklicks als sequentielles Programm ausführen und debuggen, was die Fehlersuche eindeutiger macht: Haben sich die Bugs beim Parallelisieren eingeschlichen oder basieren sie auf grundsätzlichen Schwächen im Programmdesign?</li>
</ul>
<p>Dies ist übrigens nur einer kleiner Auschnitt der Funktionsvielfalt der Parallel Debugger Extension. Falls ihr mehr dazu wissen wollt, <a title="Mehr Infos zur Intel Parallel Debugger Extension und Downloads diverser Dokumente" href="http://software.intel.com/en-us/articles/parallel-debugger-extension/" target="_blank">empfehle ich den Download des 29-seitigen PDF-Dokuments</a>, das sehr detailliert auf die Debugger-Erweiterung des Parallel Composer eingeht.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/paralleltesten-mit-visual-studio-parallel-debugger-extension/07/2009/&via=sw_devtwits&text=Paralleltesten mit Visual Studio: Parallel Debugger Extension&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/paralleltesten-mit-visual-studio-parallel-debugger-extension/07/2009/&via=sw_devtwits&text=Paralleltesten mit Visual Studio: Parallel Debugger Extension&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/paralleltesten-mit-visual-studio-parallel-debugger-extension/07/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vergleich: Intel Thread Checker versus Parallel Inspector</title>
		<link>http://www.software-dev-blog.de/vergleich-intel-thread-checker-versus-parallel-inspector/07/2009/</link>
		<comments>http://www.software-dev-blog.de/vergleich-intel-thread-checker-versus-parallel-inspector/07/2009/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 14:54:27 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1095</guid>
		<description><![CDATA[Auf dem Intel Software Network habe ich eine interessante Gegenüberstellung gefunden, die auf einen Blick zeigt, worin sich die Tools Intel Thread Checker und Intel Parallel Inspector unterscheiden. Daraus ergeben sich interessante Aspekte: Intel Parallel Inspector ist aus dem Thread Checker entstanden und jetzt ein Teil der Entwicklersuite Parallel Studio. Damit ist klar, dass sich [...]]]></description>
			<content:encoded><![CDATA[<p>Auf dem Intel Software Network habe ich <a title="Intel Thread Checker versus Parallel Inspector" href="http://software.intel.com/en-us/articles/intelr-parallel-inspector-comparison-with-intelr-thread-checker/" target="_blank">eine interessante Gegenüberstellung</a> gefunden, die auf einen Blick zeigt, worin sich die Tools <a title="Intel Thread Checker" href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Intel Thread Checker</a> und <a title=" Parallel-Studio-Serie (3): mehr Infos zum Parallel Inspector " href="http://www.software-dev-blog.de/parallel-studio-serie-mehr-infos-zum-parallel-inspector/02/2009/">Intel Parallel Inspector</a> unterscheiden. Daraus ergeben sich interessante Aspekte:</p>
<ul>
<li>Intel Parallel Inspector ist aus dem Thread Checker entstanden und jetzt ein Teil der Entwicklersuite <a title=" Happy Birthday, Parallel Studio! " href="http://www.software-dev-blog.de/happy-birthday-parallel-studio/05/2009/">Parallel Studio</a>. Damit ist klar, dass sich Parallel Inspector nur in Verbindung mit Visual Studio 2005 oder 2008 unter Windows nutzen lässt. Thread Checker hingegen ist ein Stand-Alone-Tool, das man sowohl unter Windows als auch mit Linux einsetzen kann.</li>
</ul>
<ul>
<li>Beide Werkzeuge eignen sich für das Aufspüren von möglichen <a title="Exkurs: Von Dead Locks und Data Races" href="http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/">Data Races und Dead Locks</a>, vor allem für parallel programmierte Anwendungen. Darüber hinaus spürt Parallel Inspector mögliche Speicherprobleme auf.</li>
</ul>
<ul>
<li>Parallel Inspector hat natürlich von den Fehlern des Thread Checkers gelernt, ist daher schneller einsetzbar, generiert bei der Analyse der Anwendung weniger Overhead und sorgt für skalierbare Tests, ohne dass die Anwendung vorher serialisiert werden muss.</li>
</ul>
<ul>
<li>Thread Checker basiert auf einem Lizenzmodell, das den Einsatz des Tools auf mehreren Rechnern erlaubt, aber immer nur auf einem PC zur selben Zeit. Zudem bietet Intel für den Checker unbegrenzten Premier-Support und für die Dauer eines Jahres kostenlose Produkt-Updates.</li>
</ul>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/vergleich-intel-thread-checker-versus-parallel-inspector/07/2009/&via=sw_devtwits&text=Vergleich: Intel Thread Checker versus Parallel Inspector&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/vergleich-intel-thread-checker-versus-parallel-inspector/07/2009/&via=sw_devtwits&text=Vergleich: Intel Thread Checker versus Parallel Inspector&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/vergleich-intel-thread-checker-versus-parallel-inspector/07/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux-Debugger für C++ und Fortran mit grafischer Oberfläche</title>
		<link>http://www.software-dev-blog.de/linux-debugger-fur-c-und-fortran-mit-grafischer-oberflache/07/2009/</link>
		<comments>http://www.software-dev-blog.de/linux-debugger-fur-c-und-fortran-mit-grafischer-oberflache/07/2009/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 10:43:34 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=1093</guid>
		<description><![CDATA[Es soll ja Leute geben, die (a) nicht viel von grafisch basierten Oberflächen halten und (b) nicht wissen, dass die Intel-Linux-Compiler für C/C++ und Fortran einen solchen GUI-Debugger mitbringen. Dieselben konnte ich mir vorletzte Woche während meines Besuchs bei Intel in Ulm ansehen und mir ein Bild von ihren Fähigkeiten machen. Und das kam dabei [...]]]></description>
			<content:encoded><![CDATA[<p>Es soll ja Leute geben, die (a) nicht viel von grafisch basierten Oberflächen halten und (b) nicht wissen, dass die Intel-Linux-Compiler für C/C++ und Fortran einen solchen GUI-Debugger mitbringen. Dieselben konnte ich mir vorletzte Woche <a title=" Intel Ulm und die Linux-Debugger-Tools " href="http://www.software-dev-blog.de/intel-ulm-und-die-linux-debugger-tools/07/2009/">während meines Besuchs bei Intel in Ulm</a> ansehen und mir ein Bild von ihren Fähigkeiten machen. Und das kam dabei heraus (mehr dazu folgt noch diese Woche mit weiteren Details und ein paar interessanten Bildern).</p>
<p>Das absolute Highlight des GUI-basierten Linux-Debuggers von Intel ist die Möglichkeit, einzelne Breakpoints zu setzen, zu speichern und bei Bedarf das so markierte Projekt wieder aufzurufen. Das ist vor allem dann hilfreich, wenn sich die Umgebungsentwicklung mal verabschieden sollte oder man andere Dinge zwischendurch zu tun hat, bevor man sich wieder dem Debuggen zuwendet. Ein Breakpoint wird dank der grafischen Bedieneroberfläche per doppeltem Mausklick erzeugt &#8211; und genauso schnell wieder entfernt. Das macht das Testen von C/C++ und Fortran-Projekten wirklich sehr komfortabel.</p>
<p>Aber auch das Testen parallel programmierter Projekte unter Linux geschieht mit dem Debugger von Intel recht überzeugend. So kann man in Echtzeit eine komplette Anwendung (oder Teile davon) auf mögliche Data Races hin untersuchen. Genau genommen identifiziert der Debugger Szenarien, in denen es zu gemeinsamen Datenzugriffen kommen kann, was vor allem das konkurrierende Speichern zweier Threads betrifft. Der Programmierer oder Entwickler muss dann selbst entscheiden, ob dieser parallele Schreibzugriff gewollt ist oder im schlimmsten Fall einen Absturz der Anwendung zur Folge haben kann.</p>
<p><span id="more-1093"></span>Das Aufspüren von potenziellen Data Races kann übrigens ohne Breakpoint erfolgen. In diesem Fall muss man im Debugger die Option &#8220;Stop on Event&#8221; einstellen, und schon hält das Programm genau an der Stelle an, wo der &#8220;Crash&#8221; erfolgt. Zur schnellen Fehlerfindung wird die verursachende Stelle im Quellcode angezeigt. Dies können einzelne Adressen sein, aber auch vollständige Funktionen im Sourcecode.</p>
<p>Neben der klassischen Programmierung unterstützt der Linux-Debugger von Intel auch <a title=" Workshop: parallel Programmieren mit OpenMP " href="http://www.software-dev-blog.de/parallel-programmieren-mit-openmp/02/2009/">OpenMP</a>, was immer öfter bei der parallelen Programmierung eingesetzt wird. In diesem Fall geht es vor allem um ein Überwachen des Threadpools: Sind sämtliche Threads, die sich dort befinden, thread-sicher und wenn nicht, an welchen Stellen kann es zu Data Races kommen?</p>
<p><em>Ach ja:</em> Ein wichtiger Tipp beim parallelen Programmieren lautet: <a title=" Fünf Multicore-Programmierregeln auf einen Blick " href="http://www.software-dev-blog.de/funf-multicore-programmierregeln-auf-einen-blick/11/2008/">Denke von Anfang an parallel</a>, entwerfe parallel, programmiere aber zuerst seriell. Dies stellt sicher, dass der sequentielle Quellcode fehlerfrei läuft und sich anschließend die parallelen Konstrukte einbauen lassen &#8211; beispielsweise mithilfe von OpenMP. In diesem Fall müssen für das serielle Debuggen nicht sämtliche OpenMP-Pragmas entfernt oder deaktiviert werden. Der Debugger führt nämlich die parallelen Konstrukte auf einem einzigen Thread aus, so als ob es sich um eine Single-Core-Maschine handeln würde.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/linux-debugger-fur-c-und-fortran-mit-grafischer-oberflache/07/2009/&via=sw_devtwits&text=Linux-Debugger für C++ und Fortran mit grafischer Oberfläche&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/linux-debugger-fur-c-und-fortran-mit-grafischer-oberflache/07/2009/&via=sw_devtwits&text=Linux-Debugger für C++ und Fortran mit grafischer Oberfläche&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/linux-debugger-fur-c-und-fortran-mit-grafischer-oberflache/07/2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fehler im Multithread-Code aufspüren: Thread Checker</title>
		<link>http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/</link>
		<comments>http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 09:49:31 +0000</pubDate>
		<dc:creator>Michael Hülskötter</dc:creator>
				<category><![CDATA[Multicore]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[Debuggen]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.software-dev-blog.de/?p=332</guid>
		<description><![CDATA[Beim Erstellen von parallel programmiertem Quellcode treten im Gegensatz zu seriellem Sourcecode zwei mögliche Probleme sehr viel häufiger auf: Race Conditions und Dead Locks. Beide sind mit herkömmlichen Mitteln nicht aufspürbar, so dass ein spezielles Tool erforderlich ist, dass diese Aufgaben erledigen kann. Dieses Software-Werkzeug nennt sich Thread Checker und ist Bestandteil des VTune Performance [...]]]></description>
			<content:encoded><![CDATA[<p>Beim Erstellen von parallel programmiertem Quellcode treten im Gegensatz zu seriellem Sourcecode zwei mögliche Probleme sehr viel häufiger auf: Race Conditions und Dead Locks. Beide sind mit herkömmlichen Mitteln nicht aufspürbar, so dass ein spezielles Tool erforderlich ist, dass diese Aufgaben erledigen kann. Dieses Software-Werkzeug nennt sich <a title="Intel Software Analyse Tools" href="http://www.software-dev-blog.de/software-projekte-mit-intel-tools-optimieren/10/2008/">Thread Checker</a> und ist Bestandteil des <a title="VTune Performance Analyser" href="http://www.intel.com/cd/software/products/asmo-na/eng/vtune/239144.htm" target="_blank">VTune Performance Analyzer</a>, der sich wiederum vollständig in Visual Studio integrieren lässt.</p>
<p>Damit steht der Thread Checker in der bekannten Entwicklungsumgebung zur Verfügung. Eine Einschränkung gibt es allerdings: Es lassen sich nur nativ programmierte Anwendungen mit dem Thread Checker überprüfen, also nur C++ und Visual Fortran. .NET-Entwickler bleiben derzeit leider außen vor. Dies wird sich allerdings mit Visual Studio 2010 ändern, das ja Ende nächsten Jahres auf den Markt kommen soll.</p>
<p><strong>Exkurs: Race Conditions und Dead Locks</strong><br />
Race Conditions treten vor allem dann auf, wenn ein parallel programmiertes Programm zur Laufzeit zwei Thread generiert, die beide auf ein gemeinsames Datum zugreifen und davon nichts wissen. So erzeugt Thread A beispielsweise ein Datum X und speichert es, was Thread B genauso tut, ohne darüber Bescheid zu wissen, dass Thread A das Datum X gerade geändert. Dies kann natürlich zu unvorhergesehenen Problemen und Fehlern im weiteren Programmablauf führen.</p>
<p><span id="more-332"></span>Bei Dead Locks hingegen verhält es sich genau umgekehrt: Dort warten zwei Threads gemeinsam auf eine bestimmtes Ereignis, das aber niemals eintreten wird. Folge: Das Programm begibt sich in eine Endlosschleife, aus der es nicht mehr herausfindet.</p>
<p>Der Intel Thread Checker ist also ein hoch entwickelter Debugger, der Multithread-Fehler aufspürt, die mithilfe von Windows-, POSIX- und OpenMP-Thread-Tools sowie den Threading Building Blocks erzeugt wurden. Und das gilt nicht nur für aktuelle Fehler, sondern auch für potenzielle, die der Thread Checker bei seinen Untersuchungen finden kann. Das Intel-Analysetool gibt es sowohl für Windows XP und Vista in der 32- und 64-Bit-Variante als auch für Linux, allerdings nicht für Itanium-Plattformen.</p>
<p><strong>Webast-Tipp:</strong> Auf der Webseite der SOS Software Service GmbH findet sich ein sehr fundiertes <a title="Videocast Nummer zwei beschäftigt sich intensiv mit dem Thread Checker" href="http://www.software-dev-blog.de/kostenlose-webcasts-zur-multicore-programmierung/11/2008/">Videotutorial</a> zum Thema Thread Checker. In diesem Webcast wird auch ein weiteres Analyse-Tool von Intel besprochen, nämlich der <a title="Webinfos zum Thread Profiler" href="http://www.intel.com/cd/software/products/asmo-na/eng/threading/winthreadprofiler/286749.htm" target="_blank">Thread Profiler</a>.</p>
<div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/&via=sw_devtwits&text=Fehler im Multithread-Code aufspüren: Thread Checker&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><div style="float: left margin-left: 30px; margin-buttom: 20px"><a href="http://twitter.com/share?url=http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/&via=sw_devtwits&text=Fehler im Multithread-Code aufspüren: Thread Checker&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.software-dev-blog.de/fehler-im-multithread-code-aufspuren-thread-checker/11/2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

