<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[tips zur fehlersuche]]></title><description><![CDATA[<p>Ein Programm lief bis jetzt relativ Problemlos. Klassisch, bei einer Vorführung, kam es zu einem Absturz. Ich konnte den Fehler halbwegs lokalisieren und stellte fest, daß: wenn eine Init Funktion 3x (!!!) aufgerufen wird und danach eine bestimmte 2te Funktion startet kam es zum Absturz.</p>
<p>In der 2ten Funktion wird mittels printf() ein String zusammengebastelt. Nahm ich diese Zeile raus war alles gut. Nach ein paar Änderungen lief es.<br />
Ich fing an wieder step by step in Richtung Ursprung zurückzusetzen. Und der Hammer: als alles wieder so war wie am Anfang, lief es auf einmal Problemlos. Häh?</p>
<p>Der Absturz kann ja meiner Meinung nur Speicherbedingt sein. Ein try-catch würde nicht wirklich helfen, da daß Problem ja nicht behoben wird.</p>
<p>Wo fange ich an? Jetzt, wo alles wieder läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/225827/tips-zur-fehlersuche</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 08:42:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/225827.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 25 Oct 2008 14:32:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 14:32:41 GMT]]></title><description><![CDATA[<p>Ein Programm lief bis jetzt relativ Problemlos. Klassisch, bei einer Vorführung, kam es zu einem Absturz. Ich konnte den Fehler halbwegs lokalisieren und stellte fest, daß: wenn eine Init Funktion 3x (!!!) aufgerufen wird und danach eine bestimmte 2te Funktion startet kam es zum Absturz.</p>
<p>In der 2ten Funktion wird mittels printf() ein String zusammengebastelt. Nahm ich diese Zeile raus war alles gut. Nach ein paar Änderungen lief es.<br />
Ich fing an wieder step by step in Richtung Ursprung zurückzusetzen. Und der Hammer: als alles wieder so war wie am Anfang, lief es auf einmal Problemlos. Häh?</p>
<p>Der Absturz kann ja meiner Meinung nur Speicherbedingt sein. Ein try-catch würde nicht wirklich helfen, da daß Problem ja nicht behoben wird.</p>
<p>Wo fange ich an? Jetzt, wo alles wieder läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604664</guid><dc:creator><![CDATA[monde]]></dc:creator><pubDate>Sat, 25 Oct 2008 14:32:41 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 14:40:31 GMT]]></title><description><![CDATA[<p>Zur Erzielung höherer Performance mit gleichzeitiger Steigerung der Stability werden im Highend Engeneeringprozess Debugger eingesetzt. Damit wird die Baseline des agilen Developments vorgeführt und ein return on investment ist sicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604669</guid><dc:creator><![CDATA[Executiv]]></dc:creator><pubDate>Sat, 25 Oct 2008 14:40:31 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 15:03:23 GMT]]></title><description><![CDATA[<p>Aber es läuft doch. Keine Ahnung wie ich den Fehler provozieren kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604683</guid><dc:creator><![CDATA[monde]]></dc:creator><pubDate>Sat, 25 Oct 2008 15:03:23 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 15:07:09 GMT]]></title><description><![CDATA[<p>Teste weiter. Gib es dein Programm mal noch anderen Leuten zum testen. Ansonsten Schwamm drüber.. (mach irgendwo einen Vermerk und warte ab..)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604691</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 25 Oct 2008 15:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 16:36:37 GMT]]></title><description><![CDATA[<p>Oh mann, wie konnte ich bis jetzt nur OHNE Debugger arbeiten.</p>
<p>Obwohl es nicht zum Absturz kam ermittelte ich ein Segmentation Fault daß durch eine nicht zurückgesetzte Variable ausgelöst wurde. Dadurch daß Init automatisch ausgeführt wird, ich dann Init 3x neu startete und mit 4 der Max-wert erreicht war kam es zum Überlauf.</p>
<p>Ich verstehe nur nicht, daß das Programm trotzdem eigentlich fehlerfrei lief?</p>
<p>Eine Frage noch: Die Informationen des Segmentation Fault verwiesen auf verschiedene andere Header. Behoben habe ich es aber in einer ganz anderen Funktion, die nicht aufgelistet war. Ist das normal? Zum. ist der Fault jetzt weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604758</guid><dc:creator><![CDATA[monde]]></dc:creator><pubDate>Sat, 25 Oct 2008 16:36:37 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 19:03:03 GMT]]></title><description><![CDATA[<p>Segmentation fault tritt ja auf, wenn du auf Speicher zugreifst, welcher dir eigentlich nicht oder nicht mehr gehört. Kommt durch Nullzeiger oder wildezeiger und ähnliches. Das Verhalten des Programmes ist da undefiniert, dass macht diesen Fehler so gefährlich. Undefiniert heisst genau das, was es heisst. Grundsätzlich könnte die Hölle gefrieren, das wäre auch korrektes Verhalten. Das Programm könnte aber auch ohne Probleme weiterlaufen, ist auch erlaubt ... usw. usf.<br />
Deshalb sollte man wenn möglich immer entsprechende Bereichsüberprüfungen einbauen, ausser man ist sich GANZ SICHER, dass kein Überlauf oder ähnliches stattfinden wird.</p>
<p>Und ja, solche Fehler behebt man manchmal Meilenweit entfernt vom eigentlichen Fehler, das ist durchaus üblich.<br />
Ganz mühsam wird es, wenn der Fehler Speicher eines völlig anderen Objektes verändert und der veränderte Speicher dann an einer anderen Stelle zum Absturz führt. Es gibt in der Programmlogik dann überhaupt gar keine Verbindung zwischen den zwei Bereichen, ausser das halt zufällig der eine Zeiger genau an die falsche Stelle gezeigt hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604813</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sat, 25 Oct 2008 19:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 20:07:01 GMT]]></title><description><![CDATA[<p>(s)printf. ist erstens C und prüft zweitens nicht ob der Speicher auf den es zugreift überhaupt dir gehört. Ein wunderbarer Kandidat für Speicherzugriffsfehler, überschriebene Rücksprungadressen (mein Favorit) und mehr schwer zu findende Späße.<br />
Mein Tip: (s)printf ist zwar Bestandteil von C++. Aber seit 1998 gibts den C++ Standard, seit 1993 das ARM. und C++ Strings und Streams gabs schon davor. Nutz die Mittel des Standards, die dir Sicherheit vor Speicherzugriffsfehlern geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604820</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 25 Oct 2008 20:07:01 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 19:28:25 GMT]]></title><description><![CDATA[<p>Nicht nur <code>printf()</code> , sondern sehr viele Teile von C (gerade Zeichenkettenverwaltung) sind sehr anfällig auf Speicherzugriffsfehler, Memory Leaks und andere Unschönheiten. Wenn du C++ programmierst, solltest du auch dessen Vorteile nutzen.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>überschrieben Rücksprungadressen (mein Favorit)</p>
</blockquote>
<p>Ist dir das echt schon passiert? Wie verhielt sich das Programm dann? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604836</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 25 Oct 2008 19:28:25 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 19:54:55 GMT]]></title><description><![CDATA[<p>Gar nicht erst Fehler machen, dann sparst du dir auch die nervige Suche <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604848</guid><dc:creator><![CDATA[T0bi]]></dc:creator><pubDate>Sat, 25 Oct 2008 19:54:55 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 19:58:45 GMT]]></title><description><![CDATA[<p>T0bi schrieb:</p>
<blockquote>
<p>Gar nicht erst Fehler machen, dann sparst du dir auch die nervige Suche <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Ich bin ja mal gespannt, wie du das mit deiner Signatur in Einklang bringen willst... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<blockquote>
<p>Real programmers code binary!<br />
I never comment my sourcecode. What's HARD to write must be HARD to read!</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1604852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604852</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 25 Oct 2008 19:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 20:06:20 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Ist dir das echt schon passiert? Wie verhielt sich das Programm dann? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Ist einfach kommentarlos ausgestiegen. Der Clou an der Sache: das trat nur im Releasemodus auf. Im Debugmodus lief alles einwandfrei. Wir haben zu zweit einen kompletten Arbeitstag gebraucht um mit cout-Statements rauszufinden, dass zwar das Ende einer bestimmten Funktion erreicht wurde, aber das cout direkt nach dem Rücksprung nicht mehr ausgeführt wurde. Der Kollege hat dann mit irgendeinem Stack-monitor wohl gesehn dass es tatsächlich die Rücksprungadresse war, derweil durfte ich in der 3000-Zeilen Funktion suchen, welches von den 200 printf's auf ca. 30 char-buffern denn schuld war. Außer der Dateiendung und dem Compiler war da nicht viel C++ bei <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604854</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 25 Oct 2008 20:06:20 GMT</pubDate></item><item><title><![CDATA[Reply to tips zur fehlersuche on Sat, 25 Oct 2008 20:11:26 GMT]]></title><description><![CDATA[<p>Finde ich recht interessant...</p>
<p>Das sind halt die Momente, wo ich wieder froh bin, C++ programmieren zu dürfen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
(Wobei einem auch hier sehr mühsame Fehler unterlaufen können. ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1604857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1604857</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 25 Oct 2008 20:11:26 GMT</pubDate></item></channel></rss>