{"id":474,"date":"2009-09-23T21:36:52","date_gmt":"2009-09-23T19:36:52","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=474"},"modified":"2009-09-23T21:36:52","modified_gmt":"2009-09-23T19:36:52","slug":"vs-tipps-tricks-format-specifier-in-den-debugger-fenstern","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2009\/09\/23\/vs-tipps-tricks-format-specifier-in-den-debugger-fenstern\/","title":{"rendered":"VS-Tipps &#038; Tricks: Format Specifier in den Debugger Fenstern"},"content":{"rendered":"<p>Beim Debuggen Variablen im Watch-Window oder im Quick-View anzeigen zu lassen ist g\u00e4ngige Praxis und jeder etwas fortgeschrittene Entwickler wird diese Funktionen des <em>Visual-Studios <\/em>nutzen.<\/p>\n<p>\u00dcblicherweise w\u00e4hlt der Debugger eine Darstellungsform, die f\u00fcr die Variable geeignet ist. Besonders f\u00fcr <em>STL <\/em>Datentypen hat sich hier einiges getan seit <em>VC-2005<\/em>.<\/p>\n<p>Dennoch kann man dem Debugger f\u00fcr manche Datentypen noch einen <em>Format Specifier <\/em>mitgeben, der einem die Arbeit beim Debuggen extrem erleichert.<br \/>\n<em>Format Specifier <\/em>erlauben\u00a0es eine Variable entsprechend Ihrer Verwendung zu interpretieren. Typisch hier w\u00e4re eine Windows Nachricht. Als Integer sagt einem <em>0x0129 <\/em>nicht viel, aber <em>WM_NCCREATE <\/em>einiges. Wenn man hinter die Variable <em>nMsg <\/em>im Watch-Fenster einfach aus nMsg,wm erweitert erh\u00e4lt man sofort die Nachricht als symbolischen Wert angezeigt.<\/p>\n<p>Ich will hier nicht alle aber wenigstens ein paar sehr n\u00fctzliche und weniger bekannte Format Specifier aufz\u00e4hlen:<\/p>\n<p><strong><em>!<\/em><\/strong> &#8211; Raw format<br \/>\n<strong><em>hr<\/em><\/strong> &#8211; HRESULT in Klartext<br \/>\n<strong><em>su<\/em><\/strong> -Unicode<br \/>\n<strong><em>s8<\/em><\/strong> &#8211; UTF8<br \/>\n<strong><em>wm<\/em><\/strong> &#8211; Windowsnachricht<br \/>\n<strong><em>wc<\/em><\/strong> &#8211; Fensterstil<br \/>\n<strong><em>&lt;n&gt;<\/em><\/strong> &#8211; Anzahl der Arrayelemente<\/p>\n<p>Am sch\u00f6nsten sieht man die Wirkung an dem folgenden Code und den nachfolgenden Bildern der Watch-Windows:<\/p>\n<pre lang=\"cpp\">int g_ai[] =\r\n{\r\n  4711,\r\n  815,\r\n  1234\r\n};\r\n\r\nint _tmain(int argc, _TCHAR* argv[])\r\n{\r\n  std::list lst;\r\n  lst.push_back(1);\r\n  lst.push_back(2);\r\n  DWORD dwHResult = 2147943623;\r\n  void *szUnicode = L\"Unicode \u00c4\u00d6\u00dc\u00e4\u00f6\u00fc\";\r\n  char *szUTF8Code = \"Umlaute AE=\\xc3\\x84 OE=\\xc3\\x96 UE=\\xc3\\x9c.\";\r\n  UINT winmsg = 125;\r\n  DWORD winstyle = 0xA6730000;\r\n  int *pi = g_ai;\r\n\r\n  DebugBreak();\r\n  return 0;\r\n}<\/pre>\n<p>Hier das Ganze die Daten im Watchwindow ohne Formatspecifier:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-526\" title=\"Watch1\" src=\"http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/09\/Watch11.PNG\" alt=\"Watch1\" width=\"591\" height=\"270\" srcset=\"http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/09\/Watch11.PNG 591w, http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/09\/Watch11-300x137.PNG 300w\" sizes=\"auto, (max-width: 591px) 85vw, 591px\" \/><\/p>\n<p>Hier das Ganze mit:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-527\" title=\"Watch2\" src=\"http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/09\/Watch21.PNG\" alt=\"Watch2\" width=\"595\" height=\"316\" srcset=\"http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/09\/Watch21.PNG 595w, http:\/\/blog.m-ri.de\/wp-content\/uploads\/2009\/09\/Watch21-300x159.PNG 300w\" sizes=\"auto, (max-width: 595px) 85vw, 595px\" \/><\/p>\n<p>Weitere Links dazu:<br \/>\n<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/75w45ekt.aspx\">http:\/\/msdn.microsoft.com\/en-us\/library\/75w45ekt.aspx<\/a><br \/>\n<a href=\"http:\/\/blogs.msdn.com\/vcblog\/archive\/2006\/08\/04\/689026.aspx\">http:\/\/blogs.msdn.com\/vcblog\/archive\/2006\/08\/04\/689026.aspx<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beim Debuggen Variablen im Watch-Window oder im Quick-View anzeigen zu lassen ist g\u00e4ngige Praxis und jeder etwas fortgeschrittene Entwickler wird diese Funktionen des Visual-Studios nutzen. \u00dcblicherweise w\u00e4hlt der Debugger eine Darstellungsform, die f\u00fcr die Variable geeignet ist. Besonders f\u00fcr STL Datentypen hat sich hier einiges getan seit VC-2005. Dennoch kann man dem Debugger f\u00fcr manche &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2009\/09\/23\/vs-tipps-tricks-format-specifier-in-den-debugger-fenstern\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eVS-Tipps &#038; Tricks: Format Specifier in den Debugger Fenstern\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,3,27,172,31],"tags":[38,36,44,171,37],"class_list":["post-474","post","type-post","status-publish","format-standard","hentry","category-c","category-debugging","category-programmieren","category-vs2008","category-vs2010","category-vs-tipps-tricks","tag-debuggen","tag-vs-2005","tag-vs-2008","tag-vs-2010","tag-vs-tippstricks"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/474","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=474"}],"version-history":[{"count":0,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/474\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=474"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}