<?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[Debug vs. Release]]></title><description><![CDATA[<p>hi,</p>
<p>ich versuche in einem größeren Projekt einen Fehler zu finden. Der tritt leider nur im Release Build auf (wahrscheinlich Heap Corruption). Ich vermute mal dass der Debug Heap dafür sorgt, dass nicht initialisierte Speicherstellen mit Debug Codes (Z.B.: 0xCDCDCDCD)überschrieben sind und daher die Debugversion durchläuft.</p>
<p>Da ich mit Visual Studio arbeite, kann ich den Just-in-Time Debugger benutzen, um an die Stelle des Absturzes zu gelangen. Jetzt hab ich zwar eine Speicheraddresse, an der kann ich aber nur im ASM Code stöbern und über den Callstack komme ich auch nicht zurück bis zur entsprechenden Stelle in meinem Programm (zumindest steht dort auch nur assembler code).<br />
In solchen Fällen soll GFlags.exe (MS Debugging Tools) helfen. Sobald ich damit aber page-heap aktiviere, läuft die Anwendung wieder bzw. mein vorheriger Fehler lässt sich dann nicht mehr wiederholen(?).</p>
<p>Die Meldung im VS Debugger:</p>
<pre><code class="language-cpp">Critical Section detected c0000374
Windows hat einen Haltepunkt in xy.exe ausgelöst.

Dies kann auf eine Beschädigung des Heaps zurückzuführen sein, die auf ein Problem in xy.exe oder in einer der geladenen DLLs hinweist.

Dies kann auch darauf zurückzuführen sein, dass der Benutzer F12 drückt, während xy.exe den Fokus hat.
...
</code></pre>
<p>Gibts da irgendein Verfahren, wie ich dennoch (ohne allen Code durchzuarbeiten) an die Methode/Function ran komme, in der es hakt? ^^<br />
Bin für alle Tips dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/278870/debug-vs-release</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 20:23:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/278870.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Dec 2010 14:30:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Debug vs. Release on Tue, 14 Dec 2010 14:30:10 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ich versuche in einem größeren Projekt einen Fehler zu finden. Der tritt leider nur im Release Build auf (wahrscheinlich Heap Corruption). Ich vermute mal dass der Debug Heap dafür sorgt, dass nicht initialisierte Speicherstellen mit Debug Codes (Z.B.: 0xCDCDCDCD)überschrieben sind und daher die Debugversion durchläuft.</p>
<p>Da ich mit Visual Studio arbeite, kann ich den Just-in-Time Debugger benutzen, um an die Stelle des Absturzes zu gelangen. Jetzt hab ich zwar eine Speicheraddresse, an der kann ich aber nur im ASM Code stöbern und über den Callstack komme ich auch nicht zurück bis zur entsprechenden Stelle in meinem Programm (zumindest steht dort auch nur assembler code).<br />
In solchen Fällen soll GFlags.exe (MS Debugging Tools) helfen. Sobald ich damit aber page-heap aktiviere, läuft die Anwendung wieder bzw. mein vorheriger Fehler lässt sich dann nicht mehr wiederholen(?).</p>
<p>Die Meldung im VS Debugger:</p>
<pre><code class="language-cpp">Critical Section detected c0000374
Windows hat einen Haltepunkt in xy.exe ausgelöst.

Dies kann auf eine Beschädigung des Heaps zurückzuführen sein, die auf ein Problem in xy.exe oder in einer der geladenen DLLs hinweist.

Dies kann auch darauf zurückzuführen sein, dass der Benutzer F12 drückt, während xy.exe den Fokus hat.
...
</code></pre>
<p>Gibts da irgendein Verfahren, wie ich dennoch (ohne allen Code durchzuarbeiten) an die Methode/Function ran komme, in der es hakt? ^^<br />
Bin für alle Tips dankbar!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994435</guid><dc:creator><![CDATA[Hundolin]]></dc:creator><pubDate>Tue, 14 Dec 2010 14:30:10 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Tue, 14 Dec 2010 14:39:57 GMT]]></title><description><![CDATA[<p>Vielleicht hilft das hier weiter:</p>
<p><a href="http://blog.m-ri.de/index.php/2008/10/27/vs-tipps-tricks-heap-bugs-finden-teil-1/" rel="nofollow">http://blog.m-ri.de/index.php/2008/10/27/vs-tipps-tricks-heap-bugs-finden-teil-1/</a><br />
(ist insgesamt dreiteilig)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994444</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 14 Dec 2010 14:39:57 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Tue, 14 Dec 2010 15:34:10 GMT]]></title><description><![CDATA[<p>danke für den Tip! Werde mir das gleich mal ansehen.<br />
Ein Problem hab ich schonmal selbst gelöst:<br />
In den Linker Optionen kann auch beim Release Build &quot;Debuginfo generieren&quot; auf &quot;Ja(/DEBUG)&quot; gestellt werden. Damit sieht man statt dem Assembler Code wieder die entsprechenden C/C++ Zeilen.</p>
<p>Ich dachte nur dass sich der Release Build wieder wie die Debug Variante verhalten würde und dadurch keinen Heapfehler verursacht. Das hatte aber keinen Einfluss darauf..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1994480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1994480</guid><dc:creator><![CDATA[Hundolin]]></dc:creator><pubDate>Tue, 14 Dec 2010 15:34:10 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Fri, 17 Dec 2010 14:53:53 GMT]]></title><description><![CDATA[<p>also nochmals vielen Dank an _matze! Habe jetzt den Fehler, mit Hilfe der Debug-CRT wie in seinem Blog beschrieben, lösen können.<br />
In meinem Fall (MFC Anwendung) hab ich einfach folgendes an den Anfang der InitInstance() Methode der Hauptanwendungsklasse geschrieben:</p>
<pre><code class="language-cpp">#ifdef _DEBUG
afxMemDF |= checkAlwaysMemDF;
#endif
</code></pre>
<p>Beim nächsten Debug kam ich zum nächsten &quot;new&quot; nach Auftreten der Heapbeschädigung. Also musste ich noch etwas suchen. Dazu einfach die Zeile mit dem &quot;new&quot; um ein paar Zeilen nach oben kopieren und neu debuggen. Letztendlich wars bei mir eine Schleife, die einen Zeiger auf einen Speicherbereich (im Heap) einmal zu oft inkrementiert :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1995882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1995882</guid><dc:creator><![CDATA[Hundolin]]></dc:creator><pubDate>Fri, 17 Dec 2010 14:53:53 GMT</pubDate></item><item><title><![CDATA[Reply to Debug vs. Release on Fri, 17 Dec 2010 16:01:19 GMT]]></title><description><![CDATA[<p>Schön, dass du den Fehler gefunden hast. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1995921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1995921</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Fri, 17 Dec 2010 16:01:19 GMT</pubDate></item></channel></rss>