SlideShare uma empresa Scribd logo
1 de 16
SELA DEVELOPER PRACTICE
December 15-19, 2013

Sasha Goldshtein
CTO, SELA Group

@goldshtn
blog.sashag.net

Mastering IntelliTrace in
Development and
Production

© Copyright SELA software & Education Labs Ltd. | 14-18 Baruch Hirsch St Bnei Brak, 51202 Israel | www.selagroup.com
IntelliTrace®
Profiler-logger-debugger hybrid
“Historical Debugging”
Tracks events and method call information at
runtime
Records stack trace, local variables, and
custom information for each event
Records exceptions for later review
Historical Debugging with
IntelliTrace

Demo
What Exactly Is Collected?
Method parameters
Method return values
Reference type local variables
For each referenced object, whether or not it was
there (but not its contents)
void ReadTweets(string account) {
List<Tweet> tweets = GetTweets(account, 10);
int count = 3;
for (int i = 0; i < count; ++i)
DisplayTweet(tweets[i]);
}
Customizing The Events Collection
Collecting IntelliTrace Logs
Visual Studio can save logs from every run
under IntelliTrace
By default at C:ProgramDataMicrosoft Visual
Studio<VERSION>TraceDebugging

IntelliTraceSC.exe launch /cp:plan.xml app.exe
PowerShell cmdlets for ASP.NET/SharePoint
Microsoft Test Manager integration
Microsoft System Center integration
Opening IntelliTrace Logs

Demo
IntelliTrace and Windows Azure
The only practical way to debug long-standing
issues in cloud applications
Collecting IntelliTrace from
Windows Azure

Demo
Extending IntelliTrace Events
Add your own events to CollectionPlan.xml
IntelliTrace can generate an event from any
method call in your code or framework code
Data queries
Declarative event formatting from method calls
Only basic types supported
Declarative Data Query
<DiagnosticEventSpecification>
<SettingsName _locID="...">Garbage collection</SettingsName>
<Bindings>
<Binding>
<ModuleSpecificationId>mscorlib</ModuleSpecificationId>
<TypeName>System.GC</TypeName>
<MethodName>Collect</MethodName>
<MethodId>System.GC.Collect(System.Int32):System.Void
</MethodId>
<ShortDescriptionGC induced</ShortDescription>
<LongDescription>GC of gen {0}.</LongDescription>
<DataQueries>
<DataQuery index="0" type="Int32" query="" />
</DataQueries>
</Binding>
</Bindings>
</DiagnosticEventSpecification>
Programmability Handlers
Custom code that formats event information
Consult
Microsoft.VisualStudio.DefaultDataQueries.dll
for inspiration (undocumented)
Programmable Data Query
<DiagnosticEventSpecification enabled="true">
<CategoryId>gesture</CategoryId>
<SettingsName _locID="...">Text Changed</SettingsName>
<Bindings>
<Binding>
<MethodId>DiagnosticControls.DiagnosticTextBox.
set_DiagnosticText(System.String):System.Void
</MethodId>
<ProgrammableDataQuery>
<ModuleName>WinFormsDataQueries.dll</ModuleName>
<TypeName>DiagnosticTextBoxDataQuery</TypeName>
</ProgrammableDataQuery>
</Binding>
</Bindings>
</DiagnosticEventSpecification>
Programmable Handler
public class DiagnosticTextBoxDQ : IProgrammableDataQuery
{
public object[] EntryQuery(object thisArg, object[] args) {
return new object[] {
_nameProperty.GetValue(thisArg, null),
_textProperty.GetValue(thisArg, null) };
}
public object[] ExitQuery(object returnValue) {
return null;
}
public string FormatShortDescription(object[] results) {
return string.Format("Text changed for textbox {0}",
results[0].ToString());
}
//More methods to format and store the collected data
}
Summary
IntelliTrace is super-useful inside Visual Studio
while debugging
You can also collect IntelliTrace data from
QA, cloud, and production environments
http://msdn.microsoft.com/library/hh398365

You can extend IntelliTrace with your own
events
Questions
Sasha Goldshtein
CTO, SELA Group

@goldshtn
blog.sashag.net

Mais conteúdo relacionado

Semelhante a Mastering IntelliTrace in Development and Production

Mastering IntelliTrace in Development and Production
Mastering IntelliTrace in Development and ProductionMastering IntelliTrace in Development and Production
Mastering IntelliTrace in Development and ProductionSasha Goldshtein
 
Debugging Web Application using IntelliTrace
Debugging Web Application using IntelliTraceDebugging Web Application using IntelliTrace
Debugging Web Application using IntelliTraceAbhijitJana
 
Semantic logging with etw and slab from DCC 10/16
Semantic logging with etw and slab from DCC 10/16Semantic logging with etw and slab from DCC 10/16
Semantic logging with etw and slab from DCC 10/16Chris Holwerda
 
What is going on? Application Diagnostics on Azure - Copenhagen .NET User Group
What is going on? Application Diagnostics on Azure - Copenhagen .NET User GroupWhat is going on? Application Diagnostics on Azure - Copenhagen .NET User Group
What is going on? Application Diagnostics on Azure - Copenhagen .NET User GroupMaarten Balliauw
 
GAIBT NewYork - Serverless Machine Learning.pptx
GAIBT NewYork - Serverless Machine Learning.pptxGAIBT NewYork - Serverless Machine Learning.pptx
GAIBT NewYork - Serverless Machine Learning.pptxLuis Beltran
 
Responding to extended events in near real time
Responding to extended events in near real timeResponding to extended events in near real time
Responding to extended events in near real timeGianluca Sartori
 
Security threat analysis points for enterprise with oss
Security threat analysis points for enterprise with ossSecurity threat analysis points for enterprise with oss
Security threat analysis points for enterprise with ossHibino Hisashi
 
Digital_IOT_(Microsoft_Solution).pdf
Digital_IOT_(Microsoft_Solution).pdfDigital_IOT_(Microsoft_Solution).pdf
Digital_IOT_(Microsoft_Solution).pdfssuserd23711
 
Microsoft Azure Big Data Analytics
Microsoft Azure Big Data AnalyticsMicrosoft Azure Big Data Analytics
Microsoft Azure Big Data AnalyticsMark Kromer
 
Agile Testing Days 2017 Introducing AgileBI Sustainably
Agile Testing Days 2017 Introducing AgileBI SustainablyAgile Testing Days 2017 Introducing AgileBI Sustainably
Agile Testing Days 2017 Introducing AgileBI SustainablyRaphael Branger
 
Works on My Machine Syndrome
Works on My Machine SyndromeWorks on My Machine Syndrome
Works on My Machine SyndromeKamran Bilgrami
 
Azure Incident Response Cheat Sheet.pdf
Azure Incident Response Cheat Sheet.pdfAzure Incident Response Cheat Sheet.pdf
Azure Incident Response Cheat Sheet.pdfChristopher Doman
 
Infocyte - Digital Forensics and Incident Response (DFIR) Training Session
Infocyte - Digital Forensics and Incident Response (DFIR) Training SessionInfocyte - Digital Forensics and Incident Response (DFIR) Training Session
Infocyte - Digital Forensics and Incident Response (DFIR) Training SessionInfocyte
 
Azure IoT - Global Azure Bootcamp 2019
Azure IoT - Global Azure Bootcamp 2019Azure IoT - Global Azure Bootcamp 2019
Azure IoT - Global Azure Bootcamp 2019Sam Fernando
 
Virtual Global Azure 2020 - Azure Monitor
Virtual Global Azure 2020 - Azure MonitorVirtual Global Azure 2020 - Azure Monitor
Virtual Global Azure 2020 - Azure MonitorPedro Sousa
 
打造 AIoT 智慧物聯網時代解決方案
打造 AIoT 智慧物聯網時代解決方案打造 AIoT 智慧物聯網時代解決方案
打造 AIoT 智慧物聯網時代解決方案Poy Chang
 
SplunkLive! Zurich 2018: Integrating Metrics and Logs
SplunkLive! Zurich 2018: Integrating Metrics and LogsSplunkLive! Zurich 2018: Integrating Metrics and Logs
SplunkLive! Zurich 2018: Integrating Metrics and LogsSplunk
 
CiNPA Security SIG - Exploiting the Tiredful API
CiNPA Security SIG - Exploiting the Tiredful APICiNPA Security SIG - Exploiting the Tiredful API
CiNPA Security SIG - Exploiting the Tiredful APICiNPA Security SIG
 
Banner XE CAUSE 2013 Part 2
Banner XE CAUSE 2013 Part 2Banner XE CAUSE 2013 Part 2
Banner XE CAUSE 2013 Part 2Jim Kane
 

Semelhante a Mastering IntelliTrace in Development and Production (20)

Mastering IntelliTrace in Development and Production
Mastering IntelliTrace in Development and ProductionMastering IntelliTrace in Development and Production
Mastering IntelliTrace in Development and Production
 
Debugging Web Application using IntelliTrace
Debugging Web Application using IntelliTraceDebugging Web Application using IntelliTrace
Debugging Web Application using IntelliTrace
 
Semantic logging with etw and slab from DCC 10/16
Semantic logging with etw and slab from DCC 10/16Semantic logging with etw and slab from DCC 10/16
Semantic logging with etw and slab from DCC 10/16
 
What is going on? Application Diagnostics on Azure - Copenhagen .NET User Group
What is going on? Application Diagnostics on Azure - Copenhagen .NET User GroupWhat is going on? Application Diagnostics on Azure - Copenhagen .NET User Group
What is going on? Application Diagnostics on Azure - Copenhagen .NET User Group
 
GAIBT NewYork - Serverless Machine Learning.pptx
GAIBT NewYork - Serverless Machine Learning.pptxGAIBT NewYork - Serverless Machine Learning.pptx
GAIBT NewYork - Serverless Machine Learning.pptx
 
Responding to extended events in near real time
Responding to extended events in near real timeResponding to extended events in near real time
Responding to extended events in near real time
 
Fluentd - Unified logging layer
Fluentd -  Unified logging layerFluentd -  Unified logging layer
Fluentd - Unified logging layer
 
Security threat analysis points for enterprise with oss
Security threat analysis points for enterprise with ossSecurity threat analysis points for enterprise with oss
Security threat analysis points for enterprise with oss
 
Digital_IOT_(Microsoft_Solution).pdf
Digital_IOT_(Microsoft_Solution).pdfDigital_IOT_(Microsoft_Solution).pdf
Digital_IOT_(Microsoft_Solution).pdf
 
Microsoft Azure Big Data Analytics
Microsoft Azure Big Data AnalyticsMicrosoft Azure Big Data Analytics
Microsoft Azure Big Data Analytics
 
Agile Testing Days 2017 Introducing AgileBI Sustainably
Agile Testing Days 2017 Introducing AgileBI SustainablyAgile Testing Days 2017 Introducing AgileBI Sustainably
Agile Testing Days 2017 Introducing AgileBI Sustainably
 
Works on My Machine Syndrome
Works on My Machine SyndromeWorks on My Machine Syndrome
Works on My Machine Syndrome
 
Azure Incident Response Cheat Sheet.pdf
Azure Incident Response Cheat Sheet.pdfAzure Incident Response Cheat Sheet.pdf
Azure Incident Response Cheat Sheet.pdf
 
Infocyte - Digital Forensics and Incident Response (DFIR) Training Session
Infocyte - Digital Forensics and Incident Response (DFIR) Training SessionInfocyte - Digital Forensics and Incident Response (DFIR) Training Session
Infocyte - Digital Forensics and Incident Response (DFIR) Training Session
 
Azure IoT - Global Azure Bootcamp 2019
Azure IoT - Global Azure Bootcamp 2019Azure IoT - Global Azure Bootcamp 2019
Azure IoT - Global Azure Bootcamp 2019
 
Virtual Global Azure 2020 - Azure Monitor
Virtual Global Azure 2020 - Azure MonitorVirtual Global Azure 2020 - Azure Monitor
Virtual Global Azure 2020 - Azure Monitor
 
打造 AIoT 智慧物聯網時代解決方案
打造 AIoT 智慧物聯網時代解決方案打造 AIoT 智慧物聯網時代解決方案
打造 AIoT 智慧物聯網時代解決方案
 
SplunkLive! Zurich 2018: Integrating Metrics and Logs
SplunkLive! Zurich 2018: Integrating Metrics and LogsSplunkLive! Zurich 2018: Integrating Metrics and Logs
SplunkLive! Zurich 2018: Integrating Metrics and Logs
 
CiNPA Security SIG - Exploiting the Tiredful API
CiNPA Security SIG - Exploiting the Tiredful APICiNPA Security SIG - Exploiting the Tiredful API
CiNPA Security SIG - Exploiting the Tiredful API
 
Banner XE CAUSE 2013 Part 2
Banner XE CAUSE 2013 Part 2Banner XE CAUSE 2013 Part 2
Banner XE CAUSE 2013 Part 2
 

Mais de Sasha Goldshtein

Modern Linux Tracing Landscape
Modern Linux Tracing LandscapeModern Linux Tracing Landscape
Modern Linux Tracing LandscapeSasha Goldshtein
 
The Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerThe Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerSasha Goldshtein
 
Staring into the eBPF Abyss
Staring into the eBPF AbyssStaring into the eBPF Abyss
Staring into the eBPF AbyssSasha Goldshtein
 
Visual Studio 2015 and the Next .NET Framework
Visual Studio 2015 and the Next .NET FrameworkVisual Studio 2015 and the Next .NET Framework
Visual Studio 2015 and the Next .NET FrameworkSasha Goldshtein
 
Swift: Apple's New Programming Language for iOS and OS X
Swift: Apple's New Programming Language for iOS and OS XSwift: Apple's New Programming Language for iOS and OS X
Swift: Apple's New Programming Language for iOS and OS XSasha Goldshtein
 
C# Everywhere: Cross-Platform Mobile Apps with Xamarin
C# Everywhere: Cross-Platform Mobile Apps with XamarinC# Everywhere: Cross-Platform Mobile Apps with Xamarin
C# Everywhere: Cross-Platform Mobile Apps with XamarinSasha Goldshtein
 
Modern Backends for Mobile Apps
Modern Backends for Mobile AppsModern Backends for Mobile Apps
Modern Backends for Mobile AppsSasha Goldshtein
 
Delivering Millions of Push Notifications in Minutes
Delivering Millions of Push Notifications in MinutesDelivering Millions of Push Notifications in Minutes
Delivering Millions of Push Notifications in MinutesSasha Goldshtein
 
Building Mobile Apps with a Mobile Services .NET Backend
Building Mobile Apps with a Mobile Services .NET BackendBuilding Mobile Apps with a Mobile Services .NET Backend
Building Mobile Apps with a Mobile Services .NET BackendSasha Goldshtein
 
Building iOS and Android Apps with Mobile Services
Building iOS and Android Apps with Mobile ServicesBuilding iOS and Android Apps with Mobile Services
Building iOS and Android Apps with Mobile ServicesSasha Goldshtein
 
Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile ServicesSasha Goldshtein
 
First Steps in Android Development
First Steps in Android DevelopmentFirst Steps in Android Development
First Steps in Android DevelopmentSasha Goldshtein
 
First Steps in iOS Development
First Steps in iOS DevelopmentFirst Steps in iOS Development
First Steps in iOS DevelopmentSasha Goldshtein
 
JavaScript, Meet Cloud: Node.js on Windows Azure
JavaScript, Meet Cloud: Node.js on Windows AzureJavaScript, Meet Cloud: Node.js on Windows Azure
JavaScript, Meet Cloud: Node.js on Windows AzureSasha Goldshtein
 
First Steps in Android Development with Eclipse and Xamarin
First Steps in Android Development with Eclipse and XamarinFirst Steps in Android Development with Eclipse and Xamarin
First Steps in Android Development with Eclipse and XamarinSasha Goldshtein
 

Mais de Sasha Goldshtein (20)

Modern Linux Tracing Landscape
Modern Linux Tracing LandscapeModern Linux Tracing Landscape
Modern Linux Tracing Landscape
 
The Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF PrimerThe Next Linux Superpower: eBPF Primer
The Next Linux Superpower: eBPF Primer
 
Staring into the eBPF Abyss
Staring into the eBPF AbyssStaring into the eBPF Abyss
Staring into the eBPF Abyss
 
Visual Studio 2015 and the Next .NET Framework
Visual Studio 2015 and the Next .NET FrameworkVisual Studio 2015 and the Next .NET Framework
Visual Studio 2015 and the Next .NET Framework
 
Swift: Apple's New Programming Language for iOS and OS X
Swift: Apple's New Programming Language for iOS and OS XSwift: Apple's New Programming Language for iOS and OS X
Swift: Apple's New Programming Language for iOS and OS X
 
C# Everywhere: Cross-Platform Mobile Apps with Xamarin
C# Everywhere: Cross-Platform Mobile Apps with XamarinC# Everywhere: Cross-Platform Mobile Apps with Xamarin
C# Everywhere: Cross-Platform Mobile Apps with Xamarin
 
Modern Backends for Mobile Apps
Modern Backends for Mobile AppsModern Backends for Mobile Apps
Modern Backends for Mobile Apps
 
.NET Debugging Workshop
.NET Debugging Workshop.NET Debugging Workshop
.NET Debugging Workshop
 
Introduction to RavenDB
Introduction to RavenDBIntroduction to RavenDB
Introduction to RavenDB
 
State of the Platforms
State of the PlatformsState of the Platforms
State of the Platforms
 
Delivering Millions of Push Notifications in Minutes
Delivering Millions of Push Notifications in MinutesDelivering Millions of Push Notifications in Minutes
Delivering Millions of Push Notifications in Minutes
 
Building Mobile Apps with a Mobile Services .NET Backend
Building Mobile Apps with a Mobile Services .NET BackendBuilding Mobile Apps with a Mobile Services .NET Backend
Building Mobile Apps with a Mobile Services .NET Backend
 
Building iOS and Android Apps with Mobile Services
Building iOS and Android Apps with Mobile ServicesBuilding iOS and Android Apps with Mobile Services
Building iOS and Android Apps with Mobile Services
 
Task and Data Parallelism
Task and Data ParallelismTask and Data Parallelism
Task and Data Parallelism
 
What's New in C++ 11?
What's New in C++ 11?What's New in C++ 11?
What's New in C++ 11?
 
Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile Services
 
First Steps in Android Development
First Steps in Android DevelopmentFirst Steps in Android Development
First Steps in Android Development
 
First Steps in iOS Development
First Steps in iOS DevelopmentFirst Steps in iOS Development
First Steps in iOS Development
 
JavaScript, Meet Cloud: Node.js on Windows Azure
JavaScript, Meet Cloud: Node.js on Windows AzureJavaScript, Meet Cloud: Node.js on Windows Azure
JavaScript, Meet Cloud: Node.js on Windows Azure
 
First Steps in Android Development with Eclipse and Xamarin
First Steps in Android Development with Eclipse and XamarinFirst Steps in Android Development with Eclipse and Xamarin
First Steps in Android Development with Eclipse and Xamarin
 

Último

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 

Último (20)

#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 

Mastering IntelliTrace in Development and Production

  • 1. SELA DEVELOPER PRACTICE December 15-19, 2013 Sasha Goldshtein CTO, SELA Group @goldshtn blog.sashag.net Mastering IntelliTrace in Development and Production © Copyright SELA software & Education Labs Ltd. | 14-18 Baruch Hirsch St Bnei Brak, 51202 Israel | www.selagroup.com
  • 2. IntelliTrace® Profiler-logger-debugger hybrid “Historical Debugging” Tracks events and method call information at runtime Records stack trace, local variables, and custom information for each event Records exceptions for later review
  • 4. What Exactly Is Collected? Method parameters Method return values Reference type local variables For each referenced object, whether or not it was there (but not its contents) void ReadTweets(string account) { List<Tweet> tweets = GetTweets(account, 10); int count = 3; for (int i = 0; i < count; ++i) DisplayTweet(tweets[i]); }
  • 6. Collecting IntelliTrace Logs Visual Studio can save logs from every run under IntelliTrace By default at C:ProgramDataMicrosoft Visual Studio<VERSION>TraceDebugging IntelliTraceSC.exe launch /cp:plan.xml app.exe PowerShell cmdlets for ASP.NET/SharePoint Microsoft Test Manager integration Microsoft System Center integration
  • 8. IntelliTrace and Windows Azure The only practical way to debug long-standing issues in cloud applications
  • 10. Extending IntelliTrace Events Add your own events to CollectionPlan.xml IntelliTrace can generate an event from any method call in your code or framework code Data queries Declarative event formatting from method calls Only basic types supported
  • 11. Declarative Data Query <DiagnosticEventSpecification> <SettingsName _locID="...">Garbage collection</SettingsName> <Bindings> <Binding> <ModuleSpecificationId>mscorlib</ModuleSpecificationId> <TypeName>System.GC</TypeName> <MethodName>Collect</MethodName> <MethodId>System.GC.Collect(System.Int32):System.Void </MethodId> <ShortDescriptionGC induced</ShortDescription> <LongDescription>GC of gen {0}.</LongDescription> <DataQueries> <DataQuery index="0" type="Int32" query="" /> </DataQueries> </Binding> </Bindings> </DiagnosticEventSpecification>
  • 12. Programmability Handlers Custom code that formats event information Consult Microsoft.VisualStudio.DefaultDataQueries.dll for inspiration (undocumented)
  • 13. Programmable Data Query <DiagnosticEventSpecification enabled="true"> <CategoryId>gesture</CategoryId> <SettingsName _locID="...">Text Changed</SettingsName> <Bindings> <Binding> <MethodId>DiagnosticControls.DiagnosticTextBox. set_DiagnosticText(System.String):System.Void </MethodId> <ProgrammableDataQuery> <ModuleName>WinFormsDataQueries.dll</ModuleName> <TypeName>DiagnosticTextBoxDataQuery</TypeName> </ProgrammableDataQuery> </Binding> </Bindings> </DiagnosticEventSpecification>
  • 14. Programmable Handler public class DiagnosticTextBoxDQ : IProgrammableDataQuery { public object[] EntryQuery(object thisArg, object[] args) { return new object[] { _nameProperty.GetValue(thisArg, null), _textProperty.GetValue(thisArg, null) }; } public object[] ExitQuery(object returnValue) { return null; } public string FormatShortDescription(object[] results) { return string.Format("Text changed for textbox {0}", results[0].ToString()); } //More methods to format and store the collected data }
  • 15. Summary IntelliTrace is super-useful inside Visual Studio while debugging You can also collect IntelliTrace data from QA, cloud, and production environments http://msdn.microsoft.com/library/hh398365 You can extend IntelliTrace with your own events
  • 16. Questions Sasha Goldshtein CTO, SELA Group @goldshtn blog.sashag.net

Notas do Editor

  1. Run the JackCompiler console app example and show how we step through, step back, and view the various events.
  2. 1.Run JackCompiler.Tests (not in debug mode) and then show the failing test.In the test output, click the .iTrace file and then view the trace, get them to see the exception and then trace back through the call stack and the various calls to see that we had a “do” statement without a closing semicolon.2.Show the stand-alone collector (IntelliTraceSC.exe) to run SDPApp.WPF with IntelliTrace collection.:IntelliTraceSC.exe launch /cp:…trace.xml /f:foo.itrace SDPApp.WPF.exe(make sure that the collection plan collects information for item selection changes)3.Open the .iTrace file from the ready-made SDPApp.WPF run and explain that the user complained they got a message box saying “Invalid Operation Exception”.Find the MessageBox event in the Events View and then use the Calls View to show that it happened while still loading speaker data. (The user clicked Load and then immediately clicked a speaker in the list before the list was fully loaded.)
  3. Go to sdpapp.cloudapp.net and view Sasha Goldshtein. An error page is displayed.Right-click the instance in Server Explorer and download the IntelliTrace logs.Find the culprit thread by looking at the request details, and then look at the Calls View until we can find the controller method that was invoked.For backup: C:\Users\Sasha\AppData\Local\Temp\Downloaded WAT Diagnostics Logs