{"id":435,"date":"2009-03-12T20:49:13","date_gmt":"2009-03-12T19:49:13","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=435"},"modified":"2009-03-12T14:04:50","modified_gmt":"2009-03-12T13:04:50","slug":"memory-dumps-on-the-fly","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2009\/03\/12\/memory-dumps-on-the-fly\/","title":{"rendered":"Memory Dumps on the fly"},"content":{"rendered":"<p>Ich hatte in einem unserer Release-Kandidaten ein massives Problem. In bestimmten nicht reproduzierbaren Situationen, blieb zeitgleich auf allen angeschlossenen Arbeitsstationen das Programm stehen. Und nun?<\/p>\n<p>Der Deadlock, der auftrat war so fatal, dass ich nicht mal mehr \u00fcber eine versteckte Funktion einen Speicherdump ausl\u00f6sen konnte. Dazu verwende intern \u00fcblicherweise\u00a0eine reservierte Tastenkombination. Nur wenn keine Nachrichten mehr abgearbeitet werden, gibt es auch keine Funktionen, die man per Tastatur aufrufen kann.<\/p>\n<p>Gl\u00fccklicherweise wurde auf allen betroffen Rechner <em>Windows Vista <\/em>eingesetzt. Und die L\u00f6sung f\u00fcr diesen Fall ist unter <em>Vista <\/em>so einfach wie genial. Im Task-Manager unter Vista findet sich im Kontextmen\u00fc ein unauff\u00e4lliger Men\u00fcpunkt: <em>&#8222;Abbilddatei erzeugen&#8220;:<\/em><\/p>\n<p><em><\/em><a href=\"http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/03\/memorydumpondemand.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone\" title=\"Memory dump on demand\" src=\"http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/03\/memorydumpondemand-300x248.png\" alt=\"Memory dump on demand\" width=\"300\" height=\"248\" \/><\/a><\/p>\n<p style=\"text-align: left;\">Jupp! Er macht genau was ich brauchte. Durch diesen netten Befehl wird im %TEMP% Verzeichnis des Benutzers ein voller Speicherdump erzeugt.<\/p>\n<p>Ich musste von 6 Dumps genau 2 durchsehen, bis ich das Problem lokalisiert hatte.<br \/>\nEine wirklich nette und n\u00fctzliche Funktion des Taskmanagers.<\/p>\n<p>Unter Windows XP kann man \u00e4hnliches machen nur ist es hier ungleich komplizierter, aber es geht auch mit dem mitgelieferten symbolischen Debugger <em>NTSD <\/em>und den folgenden Schritten:<\/p>\n<ul>\n<li>PID \u00fcber den Task-Manager ermitteln (entsprechende Spalte einblenden lassen)<\/li>\n<li>NTSD starten mit der entsprechenden PID<br \/>\n<em><strong>NTSD -p 4656<\/strong><\/em><\/li>\n<li>Dump erzeugen:<br \/>\n<strong><em>&#8230;<br \/>\n0:001&gt; .dump \/f c:\\temp\\crash\\full.dmp<br \/>\nCreating c:\\temp\\crash\\full.dmp &#8211; user full dump<br \/>\n&#8230;<\/em><\/strong><\/li>\n<li>Wird der Debugger mit Quit (<em>q<\/em>) verlassen wird auch der Prozess beendet.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Ich hatte in einem unserer Release-Kandidaten ein massives Problem. In bestimmten nicht reproduzierbaren Situationen, blieb zeitgleich auf allen angeschlossenen Arbeitsstationen das Programm stehen. Und nun? Der Deadlock, der auftrat war so fatal, dass ich nicht mal mehr \u00fcber eine versteckte Funktion einen Speicherdump ausl\u00f6sen konnte. Dazu verwende intern \u00fcblicherweise\u00a0eine reservierte Tastenkombination. Nur wenn keine Nachrichten &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2009\/03\/12\/memory-dumps-on-the-fly\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eMemory Dumps on the fly\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,17,2],"tags":[38,136,358,59,61],"class_list":["post-435","post","type-post","status-publish","format-standard","hentry","category-programmieren","category-vista-2","category-windows-api","tag-debuggen","tag-qualitaetssicherung","tag-vista","tag-win32","tag-winapi"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=435"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/435\/revisions"}],"predecessor-version":[{"id":437,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/435\/revisions\/437"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=435"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}