{"id":44900,"date":"2015-07-29T15:07:00","date_gmt":"2015-07-29T15:07:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudioalm\/2015\/07\/29\/intellitrace-method-call-information-and-edit-and-continue\/"},"modified":"2022-08-03T00:30:12","modified_gmt":"2022-08-03T08:30:12","slug":"intellitrace-method-call-information-and-edit-and-continue","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/intellitrace-method-call-information-and-edit-and-continue\/","title":{"rendered":"IntelliTrace, method call information, and Edit and Continue"},"content":{"rendered":"<p>In this blog post I\u2019m going to talk about IntelliTrace\u2019s default configuration and the ability to opt-in to capture method call information. If you haven\u2019t done so already, check out <a href=\"http:\/\/blogs.msdn.com\/b\/visualstudioalm\/archive\/2015\/01\/16\/intellitrace-in-visual-studio-ultimate-2015.aspx\">the announcement of IntelliTrace in Visual Studio 2015<\/a> which gives you an overview of IntelliTrace and its improved UI. If you\u2019re not already familiar with IntelliTrace, that post will help set the context.<\/p>\n<p>The following image shows you the IntelliTrace settings which you can access through <strong>Tools > Options > IntelliTrace<\/strong>:<\/p>\n<p><img decoding=\"async\" style=\"margin-left: auto;margin-right: auto\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/2541.2.png\" alt=\"\" border=\"0\" \/><\/p>\n<ul>\n<li><strong>Option A \u2013 Default configuration:<\/strong> IntelliTrace collects events only, optimized for low overhead, Edit and Continue is unaffected<\/li>\n<li><strong>Option B \u2013 Capture method call information:<\/strong> IntelliTrace records every single method call and captures some parameter information, Edit and Continue is disabled<\/li>\n<\/ul>\n<p>Let\u2019s go further into how these two options allow you to tailor the IntelliTrace experience to your debugging needs.<\/p>\n<h2>Option A &#8211; Default configuration<\/h2>\n<p>When you install Visual Studio, IntelliTrace is enabled by default and is set up to only collect events (option A above). This means that IntelliTrace will only record state information for moments in time it considers interesting rather than monitoring and recording every single method call. The diagram below shows you an example of how that works with a desktop app using ADO.NET:<\/p>\n<p><img decoding=\"async\" style=\"border-width: 0px;border-style: none;border-color: -moz-use-text-color;padding-top: 0px;padding-left: 0px;padding-right: 0px;margin-left: auto;margin-right: auto\" title=\"image\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/2860.image_thumb_7F30CBD2.png\" alt=\"image\" width=\"536\" height=\"172\" border=\"0\" \/><\/p>\n<p>The default configuration is optimized for best debugging performance and supports EnC. As you can see in the screenshot below, I have the Diagnostic Tools window showing me the IntelliTrace events collected on the right and on the left I\u2019m using EnC to change my code while still debugging (look for my cursor one line below the breakpoint):<\/p>\n<p><img decoding=\"async\" style=\"border-width: 0px;border-style: none;border-color: -moz-use-text-color;padding-top: 0px;padding-left: 0px;padding-right: 0px;margin-left: auto;margin-right: auto\" title=\"image\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/1185.image_thumb_51F40B86.png\" alt=\"image\" width=\"644\" height=\"423\" border=\"0\" \/><\/p>\n<p>For more information on the new IntelliTrace UI within the Diagnostic Tools window and how to consume the events collected by IntelliTrace check out the section titled \u201cLive Debugging using IntelliTrace in Visual Studio 2015\u201d from the <a href=\"http:\/\/blogs.msdn.com\/b\/visualstudioalm\/archive\/2015\/01\/14\/intellitrace-in-visual-studio-ultimate-2015.aspx\">announcement of IntelliTrace in Visual Studio 2015<\/a>.<\/p>\n<h2>Option B &#8211; Opt-in to collect method call information<\/h2>\n<p>You have the choice to change IntelliTrace\u2019s default configuration to collect events as well as every single method call that takes place (option B above). If the parameters are primitives (including strings), their values be captured as well. If the parameters are <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ah19swz4.aspx\">structs<\/a> or complex types (i.e. instances of classes) only the properties that are primitive data types will be captured.<\/p>\n<p>When enabled, a drop down appears above the filtering control in the Diagnostic Tools window. You can view the method call information that IntelliTrace has collected by changing the view to \u201cCalls\u201d using the drop-down:<\/p>\n<p><img decoding=\"async\" style=\"border-width: 0px;border-style: none;border-color: -moz-use-text-color;padding-top: 0px;padding-left: 0px;padding-right: 0px;margin-left: auto;margin-right: auto\" title=\"clip_image006\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/6011.clip_image006_thumb_62080441.png\" alt=\"clip_image006\" width=\"348\" height=\"110\" border=\"0\" \/><\/p>\n<p>You can also navigate the history of the calls made using IntelliTrace toolbar that appears inside of the code editor, using <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/vstudio\/ea46xwzd%28v=vs.100%29.aspx\">DataTips<\/a> to examine the value of the parameters:<\/p>\n<p><img decoding=\"async\" style=\"border-width: 0px;border-style: none;border-color: -moz-use-text-color;padding-top: 0px;padding-left: 0px;padding-right: 0px;margin-left: auto;margin-right: auto\" title=\"image\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/7558.image_thumb_688D45F9.png\" alt=\"image\" width=\"558\" height=\"242\" border=\"0\" \/><\/p>\n<p>Read more on <a href=\"https:\/\/msdn.microsoft.com\/en-us\/subscriptions\/index\/dd997841%28v=vs.100%29\">how to consume the information shown in the Calls view<\/a> as well as <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/vstudio\/mt228143.aspx\">how to use the IntelliTrace toolbar<\/a> that appears within the margin of the code editor.<\/p>\n<p>Unfortunately, the API that IntelliTrace uses to collect the method call data doesn\u2019t support Edit and Continue. This is the only case where using IntelliTrace affects your ability to use End and Continue, and hence you are unfortunately forced to pick which of the two productivity features you need most for that particular debugging session.<\/p>\n<p>There are other cases where EnC doesn\u2019t work regardless of IntelliTrace, but we are addressing that with continued <a href=\"http:\/\/blogs.msdn.com\/b\/visualstudioalm\/archive\/2015\/02\/23\/enc-improvements-for-net-debugging-in-visual-studio-2015.aspx\">improvements in EnC<\/a>.<\/p>\n<h2>Wrapping up<\/h2>\n<p>We are always looking for feedback and comments, especially if there is a feature you find useful. You can leave general comments &amp; questions at the end of this blog post or via <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/zzszcehe.aspx\">Send-a-Smile<\/a>, and submit feature requests to our <a href=\"http:\/\/visualstudio.uservoice.com\/forums\/121579-visual-studio\/category\/91797-intellitrace\">IntelliTrace UserVoice<\/a>. You can also <a href=\"https:\/\/twitter.com\/IntelliTrace\">send us a tweet<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog post I\u2019m going to talk about IntelliTrace\u2019s default configuration and the ability to opt-in to capture method call information. If you haven\u2019t done so already, check out the announcement of IntelliTrace in Visual Studio 2015 which gives you an overview of IntelliTrace and its improved UI. If you\u2019re not already familiar with [&hellip;]<\/p>\n","protected":false},"author":127,"featured_media":45953,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,225],"tags":[],"class_list":["post-44900","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-git"],"acf":[],"blog_post_summary":"<p>In this blog post I\u2019m going to talk about IntelliTrace\u2019s default configuration and the ability to opt-in to capture method call information. If you haven\u2019t done so already, check out the announcement of IntelliTrace in Visual Studio 2015 which gives you an overview of IntelliTrace and its improved UI. If you\u2019re not already familiar with [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/44900","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/users\/127"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/comments?post=44900"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/44900\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media\/45953"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media?parent=44900"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=44900"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=44900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}