{"id":18,"date":"2007-01-18T11:14:54","date_gmt":"2007-01-18T10:14:54","guid":{"rendered":"http:\/\/blog.m-ri.de\/index.php\/2007\/01\/18\/voraussetzungen-fur-remote-debugging-mit-msvcmon-unmanaged\/"},"modified":"2007-01-18T11:18:27","modified_gmt":"2007-01-18T10:18:27","slug":"voraussetzungen-fur-remote-debugging-mit-msvcmon-unmanaged","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2007\/01\/18\/voraussetzungen-fur-remote-debugging-mit-msvcmon-unmanaged\/","title":{"rendered":"Voraussetzungen f\u00fcr Remote debugging mit MSVCMON (unmanaged)"},"content":{"rendered":"<p>Ich bin ein Fan von Remote Debugging!<br \/>\nAber was ben\u00f6tigt man <strong>minimal<\/strong> f\u00fcr Remote Debugging auf dem Target\u00a0auf dem man debuggen m\u00f6chte (unmanaged Code)?<br \/>\nDas gesamte Remote Debugging Paket zu installieren ist aufwendig und ver\u00e4ndert das Zielsystem. Wenn man auch noch bei einem Kunden vor Ort ist auch nat\u00fcrlich ein Eingriff, den man einem Admin erst mal erkl\u00e4ren muss.<br \/>\nGeht es also auch mit weniger? <em>JA&#8230;<\/em><\/p>\n<p>F\u00fcr VS.NET 2003 braucht man nicht viel, genau genommen 4 Dateien mit einem Datenvolumen von nicht mal 600kb (passt auf jede Diskette, sofern die noch einer benutzt ;-)) :<\/p>\n<ul>\n<li><em><strong>msvcmon.exe<\/strong><\/em><\/li>\n<li><em><strong>msvcr71.dll<\/strong><\/em><\/li>\n<li><em><strong>NatDbgDM.dll<\/strong><\/em><\/li>\n<li><em><strong>NatDbgTLNet.dll<\/strong><\/em><\/li>\n<\/ul>\n<p>Wenn man nun auf Firewall Probleme verzichtet und Named Pipes als Transportschicht verwendet dann war es das schon. Dann muss man nur noch MSVCMON auf dem Target starten und es kann losgehen. Seit VS.NET 2003 startet MSVCMON ohne Angabe von Parametern\u00a0mit named Pipes als Transportschicht.\u00a0Unter Vista muss man nach meinen Erfahrungen immer den -u Parameter mit angeben wenn man Named Pipes verwendet (<a href=\"http:\/\/blog.m-ri.de\/index.php\/2007\/01\/16\/remote-debugging-mit-msvcmon-im-pipe-mode-auf-vista\/\">siehe hier<\/a>).<\/p>\n<p>Das einfachste ist es nun sich mit VS.NET 2003 remote auf einen laufenden Prozess zu attachen, den man debuggen m\u00f6chte. Man \u00f6ffnet dazu aus dem Men\u00fc <em>Debug<\/em> den Punkt <em>Processes<\/em>, w\u00e4hlt als Transportschicht Named Pipes und den Target PC. Die Liste der Prozesse f\u00fcllt sich automatisch.<br \/>\nNun nur noch den Prozess ausw\u00e4hlen und auf <em>Attach<\/em> klicken. Sofern die PDB-Dateien \u00fcbereinstimmen kann man sofort seine Breakpoints setzen und loslegen.<br \/>\nDas geht teilweise sogar noch, wenn eine UAE Meldung auf dem Monitor sichtbar ist.<\/p>\n<p>Wer unbedingt TCP\/IP als Transportschicht w\u00e4hlen will, der muss seit XP-SP2 einiges an der Firewall einstellen. Die zwei nachfolgenden Links geben entsprechende Hinweise:<br \/>\n<a href=\"http:\/\/support.microsoft.com\/kb\/833977\/de\">http:\/\/support.microsoft.com\/kb\/833977\/de<\/a><br \/>\n<a href=\"http:\/\/support.microsoft.com\/kb\/841177\/en-us\">http:\/\/support.microsoft.com\/kb\/841177\/en-us<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich bin ein Fan von Remote Debugging! Aber was ben\u00f6tigt man minimal f\u00fcr Remote Debugging auf dem Target\u00a0auf dem man debuggen m\u00f6chte (unmanaged Code)? Das gesamte Remote Debugging Paket zu installieren ist aufwendig und ver\u00e4ndert das Zielsystem. Wenn man auch noch bei einem Kunden vor Ort ist auch nat\u00fcrlich ein Eingriff, den man einem Admin &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2007\/01\/18\/voraussetzungen-fur-remote-debugging-mit-msvcmon-unmanaged\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eVoraussetzungen f\u00fcr Remote debugging mit MSVCMON (unmanaged)\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_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[11,3],"tags":[38,153],"class_list":["post-18","post","type-post","status-publish","format-standard","hentry","category-debugging","category-programmieren","tag-debuggen","tag-vs-2003"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/18","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=18"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/18\/revisions"}],"predecessor-version":[{"id":373,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/18\/revisions\/373"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=18"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=18"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=18"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}