{"id":363,"date":"2008-11-22T18:40:29","date_gmt":"2008-11-22T17:40:29","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=363"},"modified":"2008-11-22T08:39:49","modified_gmt":"2008-11-22T07:39:49","slug":"howtoremote-debugging-fast-and-easy","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2008\/11\/22\/howtoremote-debugging-fast-and-easy\/","title":{"rendered":"HOWTO:Remote Debugging fast and easy"},"content":{"rendered":"<p>Vor Jahren habe ich dazu bereits mal einen Artikel f\u00fcr VC6 ver\u00f6ffentlicht: <a href=\"http:\/\/www.mpdvc.de\/artikel\/RemoteDebugging.htm\">Remote Debugging for Dummies<\/a>! BTW: Es war \u00fcberhaupt mein erster Artikel!<br \/>\nAlso Zeit f\u00fcr ein kleines Upgrade.<br \/>\nAnmerkung: Mir geht es hier nur um natives Debuggen von C++ (also unmanaged Code), wen wird es wundern ? \ud83d\ude09<\/p>\n<p>F\u00fcr mich das ultimative Mittel der Qualit\u00e4tssicherung und die beste Waffe f\u00fcr die Jagd auf den <em>gemeinen Software-Bug <\/em>ist und bleibt <em>Remote Debugging<\/em>.<\/p>\n<p><em>Remote Debugging <\/em>ist seit es <em>Visual Studio 2002 <\/em>gibt so einfach geworden wie noch nie. Und seit es <em>Visual Studio 2005 <\/em>ist es noch einen Tick einfacher geworden. Einziger Wermuthstropfen: Remote Debugging ist erst ab der Professional Version verf\u00fcgbar.<br \/>\nUm so erstaunlicher wie wenig Entwickler dieses Werkzeug einsetzen.<\/p>\n<p>Nehmen wir einfach mal den Fall, wir haben auf einer Maschine einen Crash, oder wir haben einen Zustand, den wir sofort Debuggen wollen. Geht das On-the-fly?<\/p>\n<p>JA \u2757<\/p>\n<p>Wenn die Rechner in einer Dom\u00e4ne sind, gibt es meistens gar keine Probleme und man kann einfach wie folgt vorgehen.\u00a0<\/p>\n<ol>\n<li>Wir kopieren die Datei MSVSMON.EXE auf den Rechner auf dem wir Debuggen wollen:<br \/>\n<em>&#8222;C:\\Program Files\\Microsoft Visual Studio 9.0\\Common7\\IDE\\Remote Debugger\\x86\\msvsmon.exe&#8220;<br \/>\n<\/em>Ja! Erstaunlich, mehr ist nicht notwendig.<\/li>\n<li>Beim ersten Start erhalten wir eine Warnung, dass wir die Firewall von XP SP2 oder Vista noch freischalten m\u00fcssen. Gesagt getan.<\/li>\n<li>Nun w\u00e4hlen wir einfach die <em>schnelle etwas unsichere <\/em>Methode:<br \/>\nMen\u00fc <em>Tools -&gt; Options<\/em><br \/>\nIn dem entsprechenden Dialog, w\u00e4hlen wir nun einfach:<br \/>\n<em>No Authentication (native only)<br \/>\nAllow any user to Debug<br \/>\n<\/em>Port 4015 bleibt unver\u00e4ndert.<br \/>\nAm Besten jetzt noch die <em>Maximum idle time (seconds) <\/em>von 900 auf was Brauchbares hoch setzen, sonst wird die Session einfach beendet nach 15 Minuten.<\/li>\n<li>Ja \u2757 Das wars. Nun einfach im Visual Studio <em>Tools -&gt; Attach to Process<\/em> w\u00e4hlen (Strg+Alt+P)<br \/>\n<em>Transport: Remote (Native only with no authentication)<br \/>\nQualifier: &lt;Name des PCs den es zu debuggen gilt, oder IP-Adresse&gt;<br \/>\nRefresh<\/em><\/li>\n<li>WOW! Und schon sieht man seinen Prozess den man debuggen m\u00f6chte.<\/li>\n<li>Jetzt nur noch ausw\u00e4hlen und <em>Attach<\/em><\/li>\n<\/ol>\n<p>So einfach geht es.<br \/>\nWenn man die passenden PDB Dateien in Reichweite hat, kann man sofort Breakpoints setzen und am &#8222;lebenden Patienten&#8220; operieren, als nur &#8222;post-mortem&#8220; mit Crashdumps zu arbeiten.<\/p>\n<p>Wie man gezielt auch die Projekteinstellungen nutzen kann, habe ich mir f\u00fcr einen sp\u00e4teren Artikel vorgemerkt. \ud83d\ude09<\/p>\n<p>Siehe auch:<br \/>\n<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bt727f1t.aspx\">How to: Set Up Remote Debugging<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vor Jahren habe ich dazu bereits mal einen Artikel f\u00fcr VC6 ver\u00f6ffentlicht: Remote Debugging for Dummies! BTW: Es war \u00fcberhaupt mein erster Artikel! Also Zeit f\u00fcr ein kleines Upgrade. Anmerkung: Mir geht es hier nur um natives Debuggen von C++ (also unmanaged Code), wen wird es wundern ? \ud83d\ude09 F\u00fcr mich das ultimative Mittel der &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2008\/11\/22\/howtoremote-debugging-fast-and-easy\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eHOWTO:Remote Debugging fast and easy\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":[30,11,20,3,27],"tags":[370,38,136,36,44],"class_list":["post-363","post","type-post","status-publish","format-standard","hentry","category-c","category-debugging","category-ide","category-programmieren","category-vs2008","tag-c","tag-debuggen","tag-qualitaetssicherung","tag-vs-2005","tag-vs-2008"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/363","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=363"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/363\/revisions"}],"predecessor-version":[{"id":365,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/363\/revisions\/365"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=363"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}