SlideShare a Scribd company logo
1 of 16
A Great Clash of
Symbols
Managing and Using Symbol Files
for .NET Applications
Presented by
Gregory M. Sohl
Agenda
Symbols
Visual Studio Symbol Usage
Other Tools Symbol Usage
Places to Store Symbols
Keeping Symbols with NuGet Packages
Symbols
Produced by .NET compilers
Stored in PDB files
Contain – much less than for native
 Source file names
 Line # references
 Local variable names
 Only the info that is not already contained in
managed assemblies
Symbol File Creation
Created at compile time
A unique GUID is embedded with each
compile
 In the assembly
 In the PDB
Mismatched assembly + PDB
Kinds of Symbol Files
Private / Debug
 Debug Info = full
 Full debugging experience
Public
 Debug Info = pdb-only
 Examine stack traces, dumps, Intellitrace
Generally, don’t do “full” for release builds
due to performance hit
Keeping Symbol Files
Symbols are as important as source!
 Use with dumps from QA/production
 Use with Intellitrace from QA/production
Without matching Symbols files, working
with either much more difficult
What to Keep
Local developer builds?
Builds released to QA?
Builds released to production?
Builds released to customers?
How VS Finds Symbols
It uses a search path
 Folder relative to the binary
c:MyDirsymbolsdll
c:MyDirdll
c:MyDir
Configured paths, cache and Symbol Server
 Environment Variable: _NT_SYMBOL_PATH
 Tools / Options / Debugging / Symbols
List of Search Paths
Supported Search Paths
Local drives
Network drives
Symbol server
 Ex.
srv*http://msdl.microsoft.com/download/symbols
Local cache (highly recommended)
 Ex. cache*c:MySymbols;
Simple Search Path Setup in VS
DEMO
VS DEBUGGING
Other Tools Symbol Usage
WinDbg / SOS – Low level debugger
Intellitrace – Runtime event recorder
Keeping Your Symbols
Application & Library Symbols
 Store them with your release on a file share
 Copy them back into place as needed for
debugging
Keeping Your Symbols
Put them on a Symbol Server
 symstore – part of the Windows SDK
Reference stored symbols via file path
 SymbolSource.Server.Basic
http interface to symstore
Stores NuGet packages & symbols
bit.ly/SymbolSourceServerBasic
 NuPeek
Stores NuGet packages & symbols
https://bitbucket.org/thinkbeforecoding/nupeek
Keeping Your Symbols
TFS Build System
 Can store source, binaries and symbols
 Good blog post:
http://bit.ly/TFSSourceSymbols
My Goal
Move from CruiseControl.NET to TFS
Builds
Use TFS Build Management
 For
Binaries
Symbols
 On
All QA Builds with retention for 2-3 months
All Release Builds with retention as long as they
are in use.

More Related Content

What's hot

Metaprogramming by brandon
Metaprogramming by brandonMetaprogramming by brandon
Metaprogramming by brandon
MaslowB
 
Lecture 10 software development
Lecture 10 software developmentLecture 10 software development
Lecture 10 software development
Jehanzaib Yousuf
 
Windows PowerShell - Billings .NET User Group - August 2009
Windows PowerShell - Billings .NET User Group - August 2009Windows PowerShell - Billings .NET User Group - August 2009
Windows PowerShell - Billings .NET User Group - August 2009
John Clayton
 
OpenOffice++: Improving the Quality of Open Source Software
OpenOffice++: Improving the Quality of Open Source SoftwareOpenOffice++: Improving the Quality of Open Source Software
OpenOffice++: Improving the Quality of Open Source Software
Alexandro Colorado
 

What's hot (20)

API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)
 
Acceptance Test Drive Development with Robot Framework
Acceptance Test Drive Development with Robot FrameworkAcceptance Test Drive Development with Robot Framework
Acceptance Test Drive Development with Robot Framework
 
Why documentation osidays
Why documentation osidaysWhy documentation osidays
Why documentation osidays
 
code documentation
code documentationcode documentation
code documentation
 
Programming in c#
Programming in c#Programming in c#
Programming in c#
 
.NET and C# Introduction
.NET and C# Introduction.NET and C# Introduction
.NET and C# Introduction
 
One Engine Two Tools
One Engine Two ToolsOne Engine Two Tools
One Engine Two Tools
 
Windows script host
Windows script hostWindows script host
Windows script host
 
Documenting code yapceu2016
Documenting code yapceu2016Documenting code yapceu2016
Documenting code yapceu2016
 
Acceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot FrameworkAcceptance Test Driven Development and Robot Framework
Acceptance Test Driven Development and Robot Framework
 
Windows batch scripting
Windows batch scriptingWindows batch scripting
Windows batch scripting
 
Metaprogramming by brandon
Metaprogramming by brandonMetaprogramming by brandon
Metaprogramming by brandon
 
Process-oriented reactive service architecture
Process-oriented reactive service architectureProcess-oriented reactive service architecture
Process-oriented reactive service architecture
 
Lecture 10 software development
Lecture 10 software developmentLecture 10 software development
Lecture 10 software development
 
Windows PowerShell - Billings .NET User Group - August 2009
Windows PowerShell - Billings .NET User Group - August 2009Windows PowerShell - Billings .NET User Group - August 2009
Windows PowerShell - Billings .NET User Group - August 2009
 
The seven pillars of aspnet
The seven pillars of aspnetThe seven pillars of aspnet
The seven pillars of aspnet
 
Language Workbenches
Language WorkbenchesLanguage Workbenches
Language Workbenches
 
Xtext beyond the defaults - how to tackle performance problems
Xtext beyond the defaults -  how to tackle performance problemsXtext beyond the defaults -  how to tackle performance problems
Xtext beyond the defaults - how to tackle performance problems
 
Language Engineering With Xtext
Language Engineering With XtextLanguage Engineering With Xtext
Language Engineering With Xtext
 
OpenOffice++: Improving the Quality of Open Source Software
OpenOffice++: Improving the Quality of Open Source SoftwareOpenOffice++: Improving the Quality of Open Source Software
OpenOffice++: Improving the Quality of Open Source Software
 

Similar to A great clash of symbols

Thick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash CourseThick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash Course
NetSPI
 
Advanced driver debugging (13005399) copy
Advanced driver debugging (13005399)   copyAdvanced driver debugging (13005399)   copy
Advanced driver debugging (13005399) copy
Burlacu Sergiu
 

Similar to A great clash of symbols (20)

.Net Debugging Techniques
.Net Debugging Techniques.Net Debugging Techniques
.Net Debugging Techniques
 
.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques.NET Debugging Tips and Techniques
.NET Debugging Tips and Techniques
 
Gradle-based Android Build System
Gradle-based Android Build SystemGradle-based Android Build System
Gradle-based Android Build System
 
Thick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash CourseThick Application Penetration Testing - A Crash Course
Thick Application Penetration Testing - A Crash Course
 
GitIndex e SourceServer
GitIndex e SourceServerGitIndex e SourceServer
GitIndex e SourceServer
 
Thick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash CourseThick Application Penetration Testing: Crash Course
Thick Application Penetration Testing: Crash Course
 
Android Embedded - Smart Hubs als Schaltzentrale des IoT
Android Embedded - Smart Hubs als Schaltzentrale des IoTAndroid Embedded - Smart Hubs als Schaltzentrale des IoT
Android Embedded - Smart Hubs als Schaltzentrale des IoT
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made Easy
 
MobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android AppsMobSecCon 2015 - Dynamic Analysis of Android Apps
MobSecCon 2015 - Dynamic Analysis of Android Apps
 
01 02 - introduction - adroid stack
01  02 - introduction - adroid stack01  02 - introduction - adroid stack
01 02 - introduction - adroid stack
 
C# tutorial
C# tutorialC# tutorial
C# tutorial
 
Pentesting iOS Applications
Pentesting iOS ApplicationsPentesting iOS Applications
Pentesting iOS Applications
 
Software System Development Methodologies, tools, design and life cycle by K....
Software System Development Methodologies, tools, design and life cycle by K....Software System Development Methodologies, tools, design and life cycle by K....
Software System Development Methodologies, tools, design and life cycle by K....
 
DevOps
DevOpsDevOps
DevOps
 
Play Framework Intro-I
Play Framework Intro-IPlay Framework Intro-I
Play Framework Intro-I
 
Advanced driver debugging (13005399) copy
Advanced driver debugging (13005399)   copyAdvanced driver debugging (13005399)   copy
Advanced driver debugging (13005399) copy
 
Javascript mynotes
Javascript mynotesJavascript mynotes
Javascript mynotes
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
 
"About Firebird and Flamerobin" by Marius Popa @ eLiberatica 2007
"About Firebird and Flamerobin" by Marius Popa @ eLiberatica 2007"About Firebird and Flamerobin" by Marius Popa @ eLiberatica 2007
"About Firebird and Flamerobin" by Marius Popa @ eLiberatica 2007
 
APIs And SDKs Breaking Into And Succeeding In A Specialty Market
APIs And SDKs  Breaking Into And Succeeding In A Specialty MarketAPIs And SDKs  Breaking Into And Succeeding In A Specialty Market
APIs And SDKs Breaking Into And Succeeding In A Specialty Market
 

More from Greg Sohl

More from Greg Sohl (8)

A DSL for Your API
A DSL for Your APIA DSL for Your API
A DSL for Your API
 
RESTful APIs in .NET
RESTful APIs in .NETRESTful APIs in .NET
RESTful APIs in .NET
 
What’s new in Visual Studio 2010 debugging
What’s new in Visual Studio 2010 debuggingWhat’s new in Visual Studio 2010 debugging
What’s new in Visual Studio 2010 debugging
 
Automated Unit Testing and TDD
Automated Unit Testing and TDDAutomated Unit Testing and TDD
Automated Unit Testing and TDD
 
Analyzing .Net Application Memory Usage And Issues
Analyzing .Net Application Memory Usage And IssuesAnalyzing .Net Application Memory Usage And Issues
Analyzing .Net Application Memory Usage And Issues
 
Application Security Part 1 Threat Defense In Client Server Applications ...
Application Security   Part 1   Threat Defense In Client Server Applications ...Application Security   Part 1   Threat Defense In Client Server Applications ...
Application Security Part 1 Threat Defense In Client Server Applications ...
 
.NET Recommended Resources
.NET Recommended Resources.NET Recommended Resources
.NET Recommended Resources
 
Object Oriented Programming In .Net
Object Oriented Programming In .NetObject Oriented Programming In .Net
Object Oriented Programming In .Net
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

A great clash of symbols

  • 1. A Great Clash of Symbols Managing and Using Symbol Files for .NET Applications Presented by Gregory M. Sohl
  • 2. Agenda Symbols Visual Studio Symbol Usage Other Tools Symbol Usage Places to Store Symbols Keeping Symbols with NuGet Packages
  • 3. Symbols Produced by .NET compilers Stored in PDB files Contain – much less than for native  Source file names  Line # references  Local variable names  Only the info that is not already contained in managed assemblies
  • 4. Symbol File Creation Created at compile time A unique GUID is embedded with each compile  In the assembly  In the PDB Mismatched assembly + PDB
  • 5. Kinds of Symbol Files Private / Debug  Debug Info = full  Full debugging experience Public  Debug Info = pdb-only  Examine stack traces, dumps, Intellitrace Generally, don’t do “full” for release builds due to performance hit
  • 6. Keeping Symbol Files Symbols are as important as source!  Use with dumps from QA/production  Use with Intellitrace from QA/production Without matching Symbols files, working with either much more difficult
  • 7. What to Keep Local developer builds? Builds released to QA? Builds released to production? Builds released to customers?
  • 8. How VS Finds Symbols It uses a search path  Folder relative to the binary c:MyDirsymbolsdll c:MyDirdll c:MyDir Configured paths, cache and Symbol Server  Environment Variable: _NT_SYMBOL_PATH  Tools / Options / Debugging / Symbols List of Search Paths
  • 9. Supported Search Paths Local drives Network drives Symbol server  Ex. srv*http://msdl.microsoft.com/download/symbols Local cache (highly recommended)  Ex. cache*c:MySymbols;
  • 10. Simple Search Path Setup in VS
  • 12. Other Tools Symbol Usage WinDbg / SOS – Low level debugger Intellitrace – Runtime event recorder
  • 13. Keeping Your Symbols Application & Library Symbols  Store them with your release on a file share  Copy them back into place as needed for debugging
  • 14. Keeping Your Symbols Put them on a Symbol Server  symstore – part of the Windows SDK Reference stored symbols via file path  SymbolSource.Server.Basic http interface to symstore Stores NuGet packages & symbols bit.ly/SymbolSourceServerBasic  NuPeek Stores NuGet packages & symbols https://bitbucket.org/thinkbeforecoding/nupeek
  • 15. Keeping Your Symbols TFS Build System  Can store source, binaries and symbols  Good blog post: http://bit.ly/TFSSourceSymbols
  • 16. My Goal Move from CruiseControl.NET to TFS Builds Use TFS Build Management  For Binaries Symbols  On All QA Builds with retention for 2-3 months All Release Builds with retention as long as they are in use.