{"id":6203,"date":"2006-08-04T18:28:00","date_gmt":"2006-08-04T18:28:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2006\/08\/04\/c-debugger-tips\/"},"modified":"2019-02-18T18:54:45","modified_gmt":"2019-02-18T18:54:45","slug":"c-debugger-tips","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/c-debugger-tips\/","title":{"rendered":"C++ Debugger Tips"},"content":{"rendered":"<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">Hi, my name is Sergey Grankin and I&#8217;m a developer on the VC++ IDE Team.&nbsp; I mostly work on the C++&nbsp;debugger&nbsp;expression evaluators &#8212; the code responsible for the magic behind the debugger watch windows.&nbsp;<\/font><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Arial\" size=\"2\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">Visual Studio&#8217;s (native) C++ debugger has many useful features that can make your debugging much more pleasant, if you know what they are.<span>&nbsp; <\/span>These tend to accumulate over releases, and get forgotten and unused, unless you happen upon an archaic piece of documentation. On&nbsp;this topic, then, there are special expression and format specifiers that you can use to better examine the content in the debugger&#8217;s watch windows.<\/font><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Arial\" size=\"2\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">For example, say we break after the following bit of code:<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>int i = 0x12345678;<\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font face=\"Arial\" size=\"2\"><\/p>\n<p><\/font><\/span>&nbsp;<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">You can use the <font face=\"Garamond\">by, wo<\/font>, and <font face=\"Garamond\">dw<\/font> operators to view contents of a variable as an unsigned byte, word, or dword:<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>i<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x12345678<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>int<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>by i<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp; 0x78 &#8216;x&#8217;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned char<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wo i<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>0x5678<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unsigned short<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw i<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>0x12345678<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned long<\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font face=\"Arial\" size=\"2\"><\/p>\n<p><\/font><\/span>&nbsp;<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">You can also use the operators on a register to do the same to the destination of the register:<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>eax 0x0012ff2c<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned long<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by eax<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>0x78 &#8216;x&#8217;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;unsigned char<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wo eax<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>0x5678<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned short<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw eax<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>0x12345678<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;unsigned long<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">These come in handy when debugging through assembly.<\/font><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Arial\" size=\"2\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">Another way to change debugger output is through format specifiers.<span>&nbsp; <\/span>These are directives passed after the expression, separated by a comma. For example, to change the radix out the output, you can append &#8216;,<font face=\"Garamond\">o<\/font>&#8216; for octal, &#8216;,<font face=\"Garamond\">d<\/font>&#8216; for decimal, or &#8216;,<font face=\"Garamond\">x<\/font>&#8216; for hex:<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&amp;n\nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>i<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>42<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>int<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>i,o<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>052<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>int<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>i,d<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>42<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>int<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>i,x<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span>0x0000002a<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>int<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Arial\" size=\"2\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">To interpret a pointer expression as a string, you can use &#8216;,<font face=\"Garamond\">s&#8217;<\/font> for an simple null-terminated string, &#8216;,<font face=\"Garamond\">s8<\/font>&#8216; for a UTF-8 string, or &#8216;,<font face=\"Garamond\">su<\/font>&#8216; for a Unicode string. (Note that the expression has to be a pointer type for this to work).<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>char str[] = &#8220;hello&#8221;;<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;wchar_t str2[] = L&#8221;world&#8221;;<\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font face=\"Garamond\" size=\"2\"><\/p>\n<p><\/font><\/span>&nbsp;<\/p>\n<p class=\"MsoNormal\"><font face=\"Garamond\"><span><\/p>\n<p><font size=\"2\">&nbsp;&nbsp;&nbsp;&nbsp;<\/font><\/p>\n<p><\/span><span><font size=\"2\"><font face=\"Garamond\">str<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0012ff00 &#8220;hello&#8221;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char [6]<\/p>\n<p><\/font><\/font><\/span><\/font><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>str,s<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;hello&#8221;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>str2<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>0x0012fee8 &#8220;world&#8221;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wchar_t [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;(void*)str2,su<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8220;world&#8221;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>void *<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Arial\" size=\"2\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">The memory operators can be used to display up to 64 bytes of memory in the preview line, as bytes, words, dwords, quads, or ascii characters.&nbsp; <\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font><span><font size=\"2\"><font face=\"Arial\"><\/p>\n<p><\/font><\/font><\/span>&nbsp;<\/p>\n<p><span><font><\/p>\n<p><p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Tahoma\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/font><font face=\"Garamond\">str,m<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>0x0012ff00<span>&nbsp;&nbsp;&nbsp;<\/span>68 65 6c 6c 6f 00 cc cc cc cc cc cc cc cc cc cc<span>&nbsp; <\/span>hello.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>char [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>str,mb<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;0x0012ff00<span>&nbsp;&nbsp;&nbsp; <\/span>68 65 6c 6c 6f 00 cc cc cc cc cc cc cc cc cc cc<span>&nbsp; <\/span>hello.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>str,mw<span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;0x0012ff00<span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>6568 6c6c 006f cccc cccc cccc cccc cccc<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>str,md<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>0x0012ff00<span>&nbsp;&nbsp;&nbsp; <\/span>6c6c6568 cccc006f cccccccc cccccccc<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>str2,mu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0012feec<span>&nbsp;&nbsp;&nbsp; <\/span>0077 006f 0072 006c 0064 0000 cccc cccc<span>&nbsp; <\/span>world.??<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;wchar_t [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;str,mq<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;0x0012ff00<span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>cccc006f6c6c6568 cccccccccccccccc<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;char [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;str,ma<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp; 0x0012ff00<span>&nbsp;&nbsp;&nbsp; <\/span>hello.(..(&#8230;&#8230;T..<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>char [6]<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\">\n<\/p>\n<p><\/font><\/span><span><font face=\"Arial\" size=\"2\"><span>&nbsp;&nbsp;&nbsp; <\/span><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">You can use ,<font face=\"Garamond\">wc ,wm<\/font> and <font face=\"Garamond\">,hr<\/font> to view data as a window class, window message, or HRESULT.<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;0x00400000,wc<span>&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;WS_OVERLAPPEDWINDOW<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>int<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;0x10,wm<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>WM_CLOSE<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>int<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Garamond\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>0x10,hr<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;0x00000010 The directory cannot be removed.<span>&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int<\/p>\n<p><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Arial\" size=\"2\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">Finally, you can use <font face=\"Garamond\">,!<\/font> to turn off STL visualizations on the expression:<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><font face=\"Arial\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;<\/span><font face=\"Garamond\">&nbsp;&nbsp;str<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>&#8220;hello world&#8221;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::basic_string&lt; &#8230; &gt;<\/font><\/font><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><font face=\"Garamond\" size=\"2\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str,!&nbsp;&nbsp;&nbsp;&nbsp; {_Bx={&#8230;} _Mysize=0x0000000b _Myres=0x0000000f}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::basic_string&lt;&#8230;&gt;<\/font><\/span><\/p>\n<p class=\"MsoNormal\">\n<p><font face=\"Arial\" size=\"2\">&nbsp;<\/font><\/p>\n<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">All of these operators can be used to ease the way you get to data while debugging, and become necessary whern creating custom visualizations. You can check-out the autoexp.dat file in your Visual Studio directory for examples of how to combine these operators and the visualization language to create custom visualizers for your own data.<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/p>\n<p class=\"MsoNormal\"><font face=\"Arial\" size=\"2\">&#8212; sergey grankin \/\/ vc++ dev team<\/font><\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hi, my name is Sergey Grankin and I&#8217;m a developer on the VC++ IDE Team.&nbsp; I mostly work on the C++&nbsp;debugger&nbsp;expression evaluators &#8212; the code responsible for the magic behind the debugger watch windows.&nbsp; &nbsp; Visual Studio&#8217;s (native) C++ debugger has many useful features that can make your debugging much more pleasant, if you know [&hellip;]<\/p>\n","protected":false},"author":289,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6203","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus"],"acf":[],"blog_post_summary":"<p>Hi, my name is Sergey Grankin and I&#8217;m a developer on the VC++ IDE Team.&nbsp; I mostly work on the C++&nbsp;debugger&nbsp;expression evaluators &#8212; the code responsible for the magic behind the debugger watch windows.&nbsp; &nbsp; Visual Studio&#8217;s (native) C++ debugger has many useful features that can make your debugging much more pleasant, if you know [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/6203","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/289"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=6203"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/6203\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=6203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=6203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=6203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}