{"id":28441,"date":"2021-07-28T16:00:32","date_gmt":"2021-07-28T16:00:32","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=28441"},"modified":"2021-07-28T16:06:01","modified_gmt":"2021-07-28T16:06:01","slug":"visual-studio-code-c-july-2021-update-disassembly-view-macro-expansion-and-windows-arm64-debugging","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/visual-studio-code-c-july-2021-update-disassembly-view-macro-expansion-and-windows-arm64-debugging\/","title":{"rendered":"Visual Studio Code C++ July 2021 Update: Disassembly View, Macro Expansion and Windows ARM64 Debugging"},"content":{"rendered":"<p>The July 2021 update of\u202f<a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.cpptools\">the C++ extension for Visual Studio Code<\/a>\u202fis here, bringing you brand new features\u2014 such as a Disassembly View while debugging, inline macro expansions, and debug support for Windows ARM64 architecture\u2014along with a bunch of enhancements and bug fixes. To find out more about all the enhancements, check out\u00a0our\u00a0<a href=\"https:\/\/github.com\/microsoft\/vscode-cpptools\/releases\/tag\/1.5.0\">release notes on GitHub.<\/a><\/p>\n<h2>Disassembly View<\/h2>\n<p>We\u2019re excited to announce that Disassembly View\u2014 our #1 upvoted GitHub issue (<a href=\"https:\/\/github.com\/microsoft\/vscode-cpptools\/issues\/206\">#206<\/a>)\u2014 is publicly available in VS Code Insiders! Disassembly View allows you to debug assembly code corresponding to the instructions created by your compiler. It\u2019ll be available in the 1.59 release of Visual Studio Code in August, but in the meantime you can <a href=\"https:\/\/code.visualstudio.com\/insiders\/\">download VS Code Insiders<\/a> and try it out!<\/p>\n<p>To open Disassembly View while debugging, right click your source code and select <strong>Open Disassembly View. <\/strong><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/open-disassembly-view-1.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-28452\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/open-disassembly-view-1.png\" alt=\"Image showing the right-click menu option to Open Disassembly View\" width=\"3101\" height=\"1999\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/open-disassembly-view-1.png 3101w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/open-disassembly-view-1-300x193.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/open-disassembly-view-1-1024x660.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/open-disassembly-view-1-768x495.png 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/open-disassembly-view-1-1536x990.png 1536w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/open-disassembly-view-1-2048x1320.png 2048w\" sizes=\"(max-width: 3101px) 100vw, 3101px\" \/><\/a><\/p>\n<p>In the Disassembly View, the yellow hollow marker represents the current instruction. For each instruction, you\u2019ll see the memory address (left column) and the machine language instructions displayed as hex (middle column) and as assembly language (right column). You can navigate between instructions, step over (<strong>F10<\/strong>) and step in to (<strong>F11<\/strong>) instructions.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-side-by-side-1.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-28451\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-side-by-side-1.png\" alt=\"Image showing the Disassembly View opened side by side with source code\" width=\"3105\" height=\"1929\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-side-by-side-1.png 3105w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-side-by-side-1-300x186.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-side-by-side-1-1024x636.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-side-by-side-1-768x477.png 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-side-by-side-1-1536x954.png 1536w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-side-by-side-1-2048x1272.png 2048w\" sizes=\"(max-width: 3105px) 100vw, 3105px\" \/><\/a><\/p>\n<p>To set a breakpoint in the Disassembly View, hover over the instruction and click the red filled circle that appears to the left of the memory address.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-set-breakpoint-1.png\"><img decoding=\"async\" class=\"alignnone wp-image-28450\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-set-breakpoint-1.png\" alt=\"Image showing the red filled circle that appears on hover to set a breakpoint at an instruction in Disassembly View\" width=\"889\" height=\"203\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-set-breakpoint-1.png 1265w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-set-breakpoint-1-300x69.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-set-breakpoint-1-1024x234.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-set-breakpoint-1-768x175.png 768w\" sizes=\"(max-width: 889px) 100vw, 889px\" \/><\/a><\/p>\n<p>Unset the breakpoint by clicking the red dot again, or by unchecking the box in the Breakpoints section of the Debug pane.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-check-breakpoint-1.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-28449\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-check-breakpoint-1.png\" alt=\"Image showing the Breakpoints section of the Debug pane, where users can enable and disable breakpoints\" width=\"530\" height=\"184\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-check-breakpoint-1.png 530w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-check-breakpoint-1-300x104.png 300w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/a><\/p>\n<p>Check out this GIF to see Disassembly View in action:<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-view-sidey-by-side.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-28447\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/disassembly-view-sidey-by-side.gif\" alt=\"GIF showing how to open Disassembly View while debugging, navigate between instructions and set breakpoints\" width=\"3116\" height=\"1954\" \/><\/a><\/p>\n<h2>Macro Expansion<\/h2>\n<p>With this latest release of the C++ extension, you can expand macros inline (GitHub issue <a href=\"https:\/\/github.com\/microsoft\/vscode-cpptools\/issues\/4183\">#4183<\/a>), making it easier to read and understand your code. To expand a macro inline, click on it, select the lightbulb, and then click <strong>Inline macro.<\/strong><\/p>\n<p><strong><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/macro-expansion.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-28448\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2021\/07\/macro-expansion.gif\" alt=\"GIF showing how to expand a macro inline\" width=\"586\" height=\"280\" \/><\/a><\/strong><\/p>\n<h2>Windows ARM64 Debugging<\/h2>\n<p>Last year, we announced support for running the C++ extension on Windows ARM64 architecture, giving Surface Pro X users access to C++ IntelliSense, code navigation, and build support. With the July 2021 update of the C++ extension, you can debug projects on Windows ARM64, completing the end-to-end Surface Pro X C++ development experience in VS Code.<\/p>\n<h2>What do you\u202fthink?<\/h2>\n<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.cpptools\">Download the C++ extension for Visual Studio Code<\/a>\u202ftoday, give it a try, and let us know what you think. If you run into any issues, or have any suggestions, please report them in the\u202f<a href=\"https:\/\/github.com\/Microsoft\/vscode-cpptools\/issues\">Issues section of our GitHub repository<\/a>. You can also join our Insiders program and get access to early builds of our release by going to\u202f<strong>File<\/strong>\u202f&gt;\u202f<strong>Preferences<\/strong>\u202f&gt;\u202f<strong>Settings<\/strong>\u202fand under\u202f<strong>Extensions<\/strong>\u202f&gt;\u202f<strong>C\/C++,<\/strong>\u202fchange the \u201c<strong>C_Cpp: Update Channel<\/strong>\u201d to \u201c<strong>Insiders<\/strong>.\u201d Then under\u202f<strong>Features\u202f<\/strong>&gt;\u202f<strong>Extensions<\/strong>, enable \u201c<strong>Extensions<\/strong>:<strong>\u202fAuto Update<\/strong>.\u201d<\/p>\n<p>We can be reached via the comments below or in email at\u202f<a href=\"mailto:visualcpp@microsoft.com\">visualcpp@microsoft.com<\/a>. You can also find our team on Twitter at\u202f<a href=\"https:\/\/twitter.com\/visualc\">@<\/a><a href=\"https:\/\/twitter.com\/visualc\">VisualC<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The July 2021 update of\u202fthe C++ extension for Visual Studio Code\u202fis here, bringing you brand new features\u2014 such as a Disassembly View while debugging, inline macro expansions, and debug support for Windows ARM64 architecture\u2014along with a bunch of enhancements and bug fixes. To find out more about all the enhancements, check out\u00a0our\u00a0release notes on GitHub. [&hellip;]<\/p>\n","protected":false},"author":27203,"featured_media":28451,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-28441","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus"],"acf":[],"blog_post_summary":"<p>The July 2021 update of\u202fthe C++ extension for Visual Studio Code\u202fis here, bringing you brand new features\u2014 such as a Disassembly View while debugging, inline macro expansions, and debug support for Windows ARM64 architecture\u2014along with a bunch of enhancements and bug fixes. To find out more about all the enhancements, check out\u00a0our\u00a0release notes on GitHub. [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/28441","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\/27203"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=28441"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/28441\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/28451"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=28441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=28441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=28441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}