{"id":1443,"date":"2013-06-26T15:20:00","date_gmt":"2013-06-26T15:20:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2013\/06\/26\/just-my-code-for-c-in-vs-2013\/"},"modified":"2021-09-29T14:13:10","modified_gmt":"2021-09-29T14:13:10","slug":"just-my-code-for-c-in-vs-2013","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/just-my-code-for-c-in-vs-2013\/","title":{"rendered":"Just My Code for C++ in VS 2013"},"content":{"rendered":"<p class=\"MsoNormal\" style=\"margin: 0in 0in 8pt\"><span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>If you have experience debugging C# or Visual Basic code in Visual Studio, you are probably familiar with a debugging feature called Just My Code (JMC).<span>&nbsp; <\/span>In Visual Studio 2013, we introduce Just My Code for C++.<span>&nbsp; <\/span>In VS2013, the goal of this C++ JMC feature is to help the user focus on their code when viewing call stacks without getting lost in library code, Windows code, etc.<\/span> <\/span><\/span><\/p>\n<p><span style=\"font-size: large\"><span style=\"color: #b01513\"><span style=\"font-family: century gothic\">User Experience<\/span><\/span><\/span><\/p>\n<p><span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>When looking at a call stack, the debugger will collapse all consecutive frames of non-user code into an annotated frame labeled [External Code].<span>&nbsp; <\/span>There is an exception to this, if the application is stopped in non-user code, then external code at the top part of the call stack will be shown. <\/span><\/span><\/span><\/p>\n<p><span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>Let&rsquo;s start with the most basic example.<span>&nbsp; <\/span>If you create a new Win32 Console application in Visual Studio 2012 (or in VS2013 with JMC turned off) and set a breakpoint on the first line, you will get the following call stack:<\/span><\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/0755.1basicstack_thumb_398F8E4F.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/0755.1basicstack_thumb_398F8E4F.png\" alt=\"Image 0755 1basicstack thumb 398F8E4F\" width=\"733\" height=\"153\" class=\"aligncenter size-full wp-image-28872\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/0755.1basicstack_thumb_398F8E4F.png 733w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/0755.1basicstack_thumb_398F8E4F-300x63.png 300w\" sizes=\"(max-width: 733px) 100vw, 733px\" \/><\/a><\/p>\n<p>&nbsp;<span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>To most users, only the top frame is really the only part that is interesting.<span>&nbsp; <\/span>The Just My Code feature reduces the call stack to this:<\/span><\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/1325.2basicstackjmc_thumb_605DA48F.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/1325.2basicstackjmc_thumb_605DA48F.png\" alt=\"Image 1325 2basicstackjmc thumb 605DA48F\" width=\"733\" height=\"86\" class=\"aligncenter size-full wp-image-28873\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/1325.2basicstackjmc_thumb_605DA48F.png 733w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/1325.2basicstackjmc_thumb_605DA48F-300x35.png 300w\" sizes=\"(max-width: 733px) 100vw, 733px\" \/><\/a><\/p>\n<p><span style=\"font-size: small\">&nbsp;<span style=\"font-family: century gothic\">Just My Code does not just apply to the Call Stack window, but to anywhere call stacks are shown.<span>&nbsp; <\/span>For example, you get these same benefits in the Threads window:<\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/4062.3threads_thumb_444CE5A4.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/4062.3threads_thumb_444CE5A4.png\" alt=\"Image 4062 3threads thumb 444CE5A4\" width=\"742\" height=\"136\" class=\"aligncenter size-full wp-image-28875\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/4062.3threads_thumb_444CE5A4.png 742w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/4062.3threads_thumb_444CE5A4-300x55.png 300w\" sizes=\"(max-width: 742px) 100vw, 742px\" \/><\/a><\/p>\n<p><span style=\"font-size: x-small\">&nbsp;<\/span><span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>Or in the Parallel Stacks window:<\/span> <\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/4075.4parallelthreads_thumb_000C7E58.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/4075.4parallelthreads_thumb_000C7E58.png\" alt=\"Image 4075 4parallelthreads thumb 000C7E58\" width=\"439\" height=\"229\" class=\"aligncenter size-full wp-image-28876\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/4075.4parallelthreads_thumb_000C7E58.png 439w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/4075.4parallelthreads_thumb_000C7E58-300x156.png 300w\" sizes=\"(max-width: 439px) 100vw, 439px\" \/><\/a><\/p>\n<p><span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>JMC can be extremely helpful in cases where there is a lot of library code that makes it difficult to find your own code.<span>&nbsp; <\/span>Consider this example when debugging a Windos Store app.&nbsp; The call stack is so unwieldy that you can&rsquo;t see the user code you care about even when you un-dock the Call Stack window and expand it to its near maximum size.<\/span> <\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/7723.5bigstack_thumb_58D23522.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/7723.5bigstack_thumb_58D23522.png\" alt=\"Image 7723 5bigstack thumb 58D23522\" width=\"638\" height=\"944\" class=\"aligncenter size-full wp-image-28881\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/7723.5bigstack_thumb_58D23522.png 638w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/7723.5bigstack_thumb_58D23522-203x300.png 203w\" sizes=\"(max-width: 638px) 100vw, 638px\" \/><\/a><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 8pt\"><span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>Just My Code makes it much simpler to find your code so that you can navigate to it.<\/span><\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/2746.6bigstackjmc_thumb_43747FBA.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/2746.6bigstackjmc_thumb_43747FBA.png\" alt=\"Image 2746 6bigstackjmc thumb 43747FBA\" width=\"649\" height=\"187\" class=\"aligncenter size-full wp-image-28874\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/2746.6bigstackjmc_thumb_43747FBA.png 649w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/2746.6bigstackjmc_thumb_43747FBA-300x86.png 300w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: large\"><span style=\"color: #b01513\"><span style=\"font-family: century gothic\">Turning JMC off and on<\/span><\/span><\/span><\/p>\n<p><span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>If it turns out that if you do want to see the external code, you can use the context menu in the call stack window to toggle between showing and hiding external code.<\/span><\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/5483.7contextmenu_thumb_6A4295FA.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/5483.7contextmenu_thumb_6A4295FA.png\" alt=\"Image 5483 7contextmenu thumb 6A4295FA\" width=\"406\" height=\"501\" class=\"aligncenter size-full wp-image-28878\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/5483.7contextmenu_thumb_6A4295FA.png 406w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/5483.7contextmenu_thumb_6A4295FA-243x300.png 243w\" sizes=\"(max-width: 406px) 100vw, 406px\" \/><\/a><\/p>\n<p><span style=\"font-size: small\">&nbsp;<span style=\"font-family: century gothic\"><span>When you turn this off, Just My Code will display the external call stack frames in a lighter gray color.<\/span><\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/6562.8graystack_thumb_2A0C7C80.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/6562.8graystack_thumb_2A0C7C80.png\" alt=\"Image 6562 8graystack thumb 2A0C7C80\" width=\"643\" height=\"153\" class=\"aligncenter size-full wp-image-28879\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/6562.8graystack_thumb_2A0C7C80.png 643w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/6562.8graystack_thumb_2A0C7C80-300x71.png 300w\" sizes=\"(max-width: 643px) 100vw, 643px\" \/><\/a><\/p>\n<p><span style=\"font-size: x-small\">&nbsp;<\/span><span style=\"font-size: small\"><span style=\"font-family: century gothic\"><span>If you want to turn Just My Code off completely, you can change the setting in Tools-&gt;Options.<\/span> <\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/5008.9toolsoptions_thumb_7EC7E578.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/5008.9toolsoptions_thumb_7EC7E578.png\" alt=\"Image 5008 9toolsoptions thumb 7EC7E578\" width=\"653\" height=\"380\" class=\"aligncenter size-full wp-image-28877\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/5008.9toolsoptions_thumb_7EC7E578.png 653w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/5008.9toolsoptions_thumb_7EC7E578-300x175.png 300w\" sizes=\"(max-width: 653px) 100vw, 653px\" \/><\/a><\/p>\n<p>&nbsp;<span style=\"font-size: large\"><span style=\"color: #b01513\"><span style=\"font-family: century gothic\">Customizing Non-user code<\/span><\/span><\/span><\/p>\n<p><span style=\"font-size: small\">&nbsp;<span style=\"font-family: century gothic\"><span>While there is a default experience for JMC out of the box, you can further customize it to your liking if you so choose.<span>&nbsp; <\/span>Non-user code is defined in xml files with a .natjmc extension found in one of two locations. <\/span><\/span><\/span><\/p>\n<p><span style=\"font-size: small\">&nbsp;<span style=\"font-family: century gothic\">%VSINSTALLDIR%\\Common7\\Packages\\Debugger\\Visualizers <\/span><\/span><\/p>\n<p><span style=\"font-size: small\">&nbsp;<span style=\"font-family: century gothic\">%USERPROFILE%\\My Documents\\Visual Studio 2012\\Visualizers <\/span><\/span><\/p>\n<p><span style=\"font-size: small\">&nbsp;<span style=\"font-family: century gothic\">These are the same locations that are used when processing native visualizers (<span class=\"msoIns\"><ins cite=\"mailto:Brad%20Sullivan\" datetime=\"2013-06-24T13:38\"><a href=\"http:\/\/blogs.msdn.com\/b\/vcblog\/archive\/2012\/07\/12\/10329460.aspx\"><span style=\"color: #4fb8c1\">natvis files<\/span><\/a><\/ins><\/span>). The default is settings are found in %VSINSTALLDIR%\\Common7\\Packages\\Debugger\\Visualizers\\default.natjmc and provide a full illustrative example of how code is defined as non-user.<\/span><\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/0523.xml_thumb_2F1DDA40.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/0523.xml_thumb_2F1DDA40.png\" alt=\"Image 0523 xml thumb 2F1DDA40\" width=\"696\" height=\"514\" class=\"aligncenter size-full wp-image-28871\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/0523.xml_thumb_2F1DDA40.png 696w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2013\/06\/0523.xml_thumb_2F1DDA40-300x222.png 300w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/a><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 8pt\"><span style=\"font-size: small\"><span style=\"font-family: century gothic\">As you can see, you can define code as non-user on three different levels:<\/span><\/span><\/p>\n<ul>\n<li>\n<div class=\"MsoNormal\" style=\"margin: 0in 0in 8pt\"><span style=\"font-size: small\"><span style=\"font-family: century gothic\">By Module <\/span><\/span><\/div>\n<\/li>\n<li>\n<div class=\"MsoNormal\" style=\"margin: 0in 0in 8pt\"><span style=\"font-size: small\"><span style=\"font-family: century gothic\">By File <\/span><\/span><\/div>\n<\/li>\n<li>\n<div class=\"MsoNormal\" style=\"margin: 0in 0in 8pt\"><span style=\"font-size: small\"><span style=\"font-family: century gothic\">By Function <\/span><\/span><\/div>\n<\/li>\n<\/ul>\n<p><span style=\"font-size: small\"><span style=\"font-family: century gothic\">Name matching allows for the use of * and ? so that you can adequately cover lots of cases by only adding a single line of xml.<span>&nbsp; <\/span>For modules, you can additionally include a company name, which will be matched against the company name included when the file was built.<span>&nbsp; <\/span>For example, the line below will define modules in system32 as non-user code if they come from Microsoft.<span>&nbsp; <\/span>However, if you install your own code into that directory, it will still be considered user code. <\/span><\/span><\/p>\n<p><span style=\"color: #0000ff;font-family: consolas;font-size: small\"><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\">&lt;<span style=\"color: #a31515;font-family: consolas\"><span style=\"color: #a31515;font-family: consolas\"><span style=\"color: #a31515;font-family: consolas\">Module<\/span><\/span><\/span><span style=\"color: #ff0000;font-family: consolas\"><span style=\"color: #ff0000;font-family: consolas\"><span style=\"color: #ff0000;font-family: consolas\">Name<\/span><\/span><\/span><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\">=<\/span><\/span><\/span><span style=\"font-family: consolas\"><span style=\"color: #000000;font-family: consolas\">&#8220;<\/span><\/span><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\">?:\\Windows\\System32\\*.dll<\/span><\/span><\/span><span style=\"font-family: consolas\"><span style=\"color: #000000;font-family: consolas\">&#8220;<\/span><\/span><span style=\"color: #ff0000;font-family: consolas\"><span style=\"color: #ff0000;font-family: consolas\"><span style=\"color: #ff0000;font-family: consolas\">Company<\/span><\/span><\/span><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\">=<\/span><\/span><\/span><span style=\"font-family: consolas\"><span style=\"color: #000000;font-family: consolas\">&#8220;<\/span><\/span><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\">Microsoft Corporation<\/span><\/span><\/span><span style=\"font-family: consolas\"><span style=\"color: #000000;font-family: consolas\">&#8220;<\/span><\/span><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\"><span style=\"color: #0000ff;font-family: consolas\"> \/&gt;<\/span> <\/span><\/span><\/span><\/span><\/span><\/p>\n<p><span style=\"font-size: small\"><span style=\"font-family: century gothic\">Additionally, for files and functions, you can include a module name to make this more specific.<span>&nbsp; <\/span>For example, line below will include RaiseException in kernel32.dll as non-user code, but will not include your function of the same name in a different binary. <\/span><\/span><\/p>\n<p><span style=\"background: white;color: blue;font-family: consolas;font-size: small\">&lt;<span style=\"color: #a31515\"><span style=\"color: #a31515\"><span style=\"color: #a31515\">Function<\/span><\/span><\/span><span style=\"color: #ff0000\"><span style=\"color: #ff0000\"><span style=\"color: #ff0000\">Name<\/span><\/span><\/span><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"><span style=\"color: #0000ff\">=<\/span><\/span><\/span><span style=\"color: #000000\">&#8220;<\/span><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"><span style=\"color: #0000ff\">RaiseException<\/span><\/span><\/span><span style=\"color: #000000\">&#8220;<\/span><span style=\"color: #ff0000\"><span style=\"color: #ff0000\"><span style=\"color: #ff0000\">Module<\/span><\/span><\/span><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"> =<\/span><\/span><\/span><span style=\"color: #000000\">&#8220;<\/span><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"><span style=\"color: #0000ff\">kernel32.dll<\/span><\/span><\/span><span style=\"color: #000000\">&#8220;<\/span><span style=\"color: #ff0000\"><span style=\"color: #ff0000\"><span style=\"color: #ff0000\">ExceptionImplementation<\/span><\/span><\/span><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"><span style=\"color: #0000ff\">=<\/span><\/span><\/span><span style=\"color: #000000\">&#8220;<\/span><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"><span style=\"color: #0000ff\">true<\/span><\/span><\/span><span style=\"color: #000000\">&#8220;<\/span><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"><span style=\"color: #0000ff\"> \/&gt;<\/span><\/span><\/span><\/span><\/p>\n<p class=\"MsoNormal\" style=\"margin: 0in 0in 8pt\"><span style=\"font-size: small\"><span style=\"font-family: century gothic\">As mentioned earlier, the debugger will still show external code at the top of the stack when the application is stopped in that code.<span>&nbsp; <\/span>The ExceptionImplementation attribute applies an exception to that rule to hide code that throws exceptions. <\/span><\/span><\/p>\n<p><span style=\"font-size: small\"><span style=\"font-family: century gothic\">We would love to hear any questions or comments you have in the comments below or on our <\/span><a href=\"http:\/\/social.msdn.microsoft.com\/Forums\/vstudio\/en-US\/home?forum=vsdebug\"><span style=\"color: #4fb8c1;font-family: century gothic\">MSDN forum<\/span><\/a><span style=\"font-family: century gothic\">. <\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you have experience debugging C# or Visual Basic code in Visual Studio, you are probably familiar with a debugging feature called Just My Code (JMC).&nbsp; In Visual Studio 2013, we introduce Just My Code for C++.&nbsp; In VS2013, the goal of this C++ JMC feature is to help the user focus on their code [&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":[140,55,194,185],"class_list":["post-1443","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","tag-c","tag-debugging","tag-diagnostics","tag-visual-studio"],"acf":[],"blog_post_summary":"<p>If you have experience debugging C# or Visual Basic code in Visual Studio, you are probably familiar with a debugging feature called Just My Code (JMC).&nbsp; In Visual Studio 2013, we introduce Just My Code for C++.&nbsp; In VS2013, the goal of this C++ JMC feature is to help the user focus on their code [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/1443","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=1443"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/1443\/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=1443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=1443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=1443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}