SlideShare a Scribd company logo
1 of 68
1
Moaid Hathot
Software Consultant
http://moaid.codes
How to become a debugging Jedi
222
• Software engineer, consultant and code Jedi
• Developing Software professionally since 2013
• Software Craftsmanship advocate
• Clean Coder
@MoaidHathot
moaidh@codevalue.net
http://www.moaid.codes
About Me
333
About CodeValue
A leading software company
• ~180 employees: more than 120 technology experts
• Provides high quality software development solutions
• Turn-Key projects
• Software development and consultation
• Tailor-made courses and training
• Fields of expertise include:
• Desktop & LOB applications
• Cloud Computing
• Advanced Mobile & Web Technologies
• User Experience (UX) & User Interface (UI)
• Application Lifecycle Management (ALM) and DevOps
• Embedded & IoT
Agenda
Introduction
Breakpoints
Debugging attributes
Debugging multithreaded code
Tools
Post-mortem debugging
4
555
The Original Bug Report
• “Debugging is the process of finding and resolving bugs or defects that
prevent correct operation of computer software or a system”
• The terms "bug" and "debugging" are popularly attributed to Admiral
Grace Hopper in the 1940s
• However the term is much older
• Thomas Edison wrote the following words in a letter to an associate in 1878:
• “It has been just so in all of my inventions. The first step is an intuition, and comes with a
burst, then difficulties arise — this thing gives out and [it is] then that "Bugs"
— as such little faults and difficulties are called — show themselves and months of intense
watching, study and labor are requisite before commercial success or failure is certainly
reached”
666
The Original Bug Report
777
Squandered time
Every minute spent in the debugger
is a minute squandered.
Period.
888
Debugging is a time-travel
999
The Aha Moment
• The two endpoints of debugging
1. What the heck.
2. Aha!
101010
Know your tools
Know your tools
111111
Know your tools
Know your tools
121212
Controlling The Debugger
• There are 10 types of (human) debuggers:
• The “I am too tired to think, let the debugger lead and control” type
• The “everything is under control” type
131313
Rubber ducking
rubber duck debugging or rubber ducking is a method
of debugging code
The name is a reference to a story in the book The
Pragmatic Programmer in which a programmer would
carry around a rubber duck and debug their code by
forcing themselves to explain it, line-by-line, to the duck
141414
Rubber ducking
rubber duck debugging or rubber ducking is a method
of debugging code
The name is a reference to a story in the book The
Pragmatic Programmer in which a programmer would
carry around a rubber duck and debug their code by
forcing themselves to explain it, line-by-line, to the duck
15
Breakpoints
15
Conditional Breakpoints
16
171717
Filters
Tracepoints (VS)
18
Tracepoints (VS)
19
Method Breakpoints
Ctrl + B
If you type a method name (without class name)
VS select all that matches
20
212121
Conditional Breakpoint’s drawbacks
What are the drawbacks of Conditional Breakpoints?
222222
Debugger Anatomy
Wait for
debug event
Handle
debug event
Continue
debug event
Start the debugger
or attach to it
Enter main
debugger loop
232323
Debugger Main Loop
1. …
2. for(;;)
3. {
4. WaitForDebugEvent(DebugEv, INFINITE);
5. switch (DebugEv->dwDebugEventCode)
6. {
7. case EXCEPTION_DEBUG_EVENT:
8. switch(DebugEv->u.Exception.ExceptionRecord.
9. ExceptionCode)
10. {
11. case EXCEPTION_ACCESS_VIOLATION:
12. case …
13. }
Source: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681675(v=vs.85).aspx
242424
Debugger Main Loop
Source: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681675(v=vs.85).aspx
1. break;
2. case CREATE_THREAD_DEBUG_EVENT:
3. dwContinueStatus =
4. OnCreateThreadDebugEvent(DebugEv);
5. break;
6. …
7. }
8. // Resume executing the thread that reported the
9. debugging event.
10. ContinueDebugEvent(DebugEv->dwProcessId,
11. DebugEv->dwThreadId,
12. dwContinueStatus);
13. }}
252525
Debugger break
262626
Debugger break
272727
Conditional Attribute
282828
Object ID’s
292929
Lambda Evaluation in Immediate & Watch Windows
30
Debugging Attributes
30
313131
Debugger Display Attribute
323232
Debugger Display Attribute
333333
Debugger Display Attribute
343434
Debugger Type Proxy Attribute
353535
Debugger Browsable Attribute
363636
Debugger Visualizer
373737
Debugger Visualizer
38
Multithreading
38
Staying on the same thread (freezing other threads)
39
Finding Tasks Deadlocks
Debug –> windows –> Tasks
40
414141
Parallel Task & Parallel Stacks
View the logical call, the logical call stack and the task/thread state
424242
Parallel Watch - View local variable in each thread’s context
434343
Concurrent Visualizer
https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.ConcurrencyVisualizerforVisualStudio2015
444444
Concurrent Visualizer
https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.ConcurrencyVisualizerforVisualStudio2015
45
OzCode
45
LINQ Debugging
46
Predicting the future
Predict
47
Custom Expressions
48
Show All Instances
49
Tracepoints (OzCode)
50
Conditional Breakpoints (OzCode)
51
invoice.Id915486 intinvoice.Id915486 int
OzCode Comapre
52
Export
53
Give it a try
https://github.com/oz-code/OzCodeDemo
55
System Internals
55
Where to download
Browser: http://Live.sysinternals.com
Shared folder: live.sysinternals.comtools
56
Process Explorer
57
Process Monitor
58
59
Post-Mortem Debugging
59
606060
Dump Files
• A minidump is a snapshot of a process
– May be created at any time, not just when a process crashes
• Minidump types
– Kernel minidumps (not relevant for this course)
– Basic (usually enough for native processes)
– Full (required to get useful info for managed processes)
616161
Dump Creation
• Minidump creation
– WinDbg
– On Vista, 2008 and up can use Task Manager
– ADPlus
– ProcDump
• Opening Dump files
– WinDbg
– Visual Studio 2012/2013
Automatic Dump Creation
To enable it, set the reg key
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error
ReportingLocalDumps<appName>
DumpFolder – Location for the output dumps
DumpCount – Maximum amount of dumps in the folder
DumpType
1 – Mini Dump
2 – Full Dump
0 – Custom Dump
CustomDumpFlags – if DumpType is 0, set the dump options
62
Debugging using the Dump (1)
63
Debugging using the Dump (2)
64
666666
Generating Symbol Tables
1. Open DotPeek
2. Add the required assembly
3. Press start Symbol server
4. In VS add new symbol source
676767
Debugging is Hard
Debugging is HARD.
Even the Pros get befuddled
sometimes
Use the right tools to decrease your Time-to-Aha factor
686868
Kahoot it
Use your browser to visit:
https://kahoot.it
69
Presenter contact details
t: @MoaidHathot
e: moaidh@codevalue.net
b: http://www.moaid.codes
w: www.codevalue.net
69
Free 3 months of OzCode
http://tinyurl.com/jpn4y96

More Related Content

What's hot

Making Your Own Static Analyzer Using Freud DSL. Marat Vyshegorodtsev
 Making Your Own Static Analyzer Using Freud DSL. Marat Vyshegorodtsev Making Your Own Static Analyzer Using Freud DSL. Marat Vyshegorodtsev
Making Your Own Static Analyzer Using Freud DSL. Marat Vyshegorodtsev
Yandex
 

What's hot (20)

Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy Code
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflix
 
Working With Legacy Code
Working With Legacy CodeWorking With Legacy Code
Working With Legacy Code
 
Unit Testing like a Pro - The Circle of Purity
Unit Testing like a Pro - The Circle of PurityUnit Testing like a Pro - The Circle of Purity
Unit Testing like a Pro - The Circle of Purity
 
Binary Studio Academy: .NET Code Testing
Binary Studio Academy: .NET Code TestingBinary Studio Academy: .NET Code Testing
Binary Studio Academy: .NET Code Testing
 
iOS Test-Driven Development
iOS Test-Driven DevelopmentiOS Test-Driven Development
iOS Test-Driven Development
 
Making Your Own Static Analyzer Using Freud DSL. Marat Vyshegorodtsev
 Making Your Own Static Analyzer Using Freud DSL. Marat Vyshegorodtsev Making Your Own Static Analyzer Using Freud DSL. Marat Vyshegorodtsev
Making Your Own Static Analyzer Using Freud DSL. Marat Vyshegorodtsev
 
Clean architecture - Protecting the Domain
Clean architecture - Protecting the DomainClean architecture - Protecting the Domain
Clean architecture - Protecting the Domain
 
Working with Legacy Code
Working with Legacy CodeWorking with Legacy Code
Working with Legacy Code
 
NET Code Testing
NET Code TestingNET Code Testing
NET Code Testing
 
Being a professional software tester
Being a professional software testerBeing a professional software tester
Being a professional software tester
 
Working Effectively with Legacy Code
Working Effectively with Legacy CodeWorking Effectively with Legacy Code
Working Effectively with Legacy Code
 
Agile Programming Systems # TDD intro
Agile Programming Systems # TDD introAgile Programming Systems # TDD intro
Agile Programming Systems # TDD intro
 
Anatomy of Test Driven Development
Anatomy of Test Driven DevelopmentAnatomy of Test Driven Development
Anatomy of Test Driven Development
 
Getting Unstuck: Working with Legacy Code and Data
Getting Unstuck: Working with Legacy Code and DataGetting Unstuck: Working with Legacy Code and Data
Getting Unstuck: Working with Legacy Code and Data
 
Working Effectively with Legacy Code: Lessons in Practice
Working Effectively with Legacy Code: Lessons in PracticeWorking Effectively with Legacy Code: Lessons in Practice
Working Effectively with Legacy Code: Lessons in Practice
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
Clean Lambdas & Streams in Java8
Clean Lambdas & Streams in Java8Clean Lambdas & Streams in Java8
Clean Lambdas & Streams in Java8
 
Extreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software CraftsmanshipExtreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software Craftsmanship
 
Rock Your Code with Code Contracts
Rock Your Code with Code ContractsRock Your Code with Code Contracts
Rock Your Code with Code Contracts
 

Viewers also liked

HELP EDUCATION FUND NEPAL
HELP EDUCATION FUND NEPALHELP EDUCATION FUND NEPAL
HELP EDUCATION FUND NEPAL
prakash dangol
 
Sequence-Issue3-OlympicLegacy-online
Sequence-Issue3-OlympicLegacy-onlineSequence-Issue3-OlympicLegacy-online
Sequence-Issue3-OlympicLegacy-online
Harry Foskett
 
0106 debugging
0106 debugging0106 debugging
0106 debugging
vkyecc1
 

Viewers also liked (17)

Debugging Effectively - PHP UK 2017
Debugging Effectively - PHP UK 2017Debugging Effectively - PHP UK 2017
Debugging Effectively - PHP UK 2017
 
HELP EDUCATION FUND NEPAL
HELP EDUCATION FUND NEPALHELP EDUCATION FUND NEPAL
HELP EDUCATION FUND NEPAL
 
Alaska Food Crisis
Alaska Food CrisisAlaska Food Crisis
Alaska Food Crisis
 
Sequence-Issue3-OlympicLegacy-online
Sequence-Issue3-OlympicLegacy-onlineSequence-Issue3-OlympicLegacy-online
Sequence-Issue3-OlympicLegacy-online
 
Writing mruby Debugger
Writing mruby DebuggerWriting mruby Debugger
Writing mruby Debugger
 
Spring Callout 2011
Spring Callout 2011Spring Callout 2011
Spring Callout 2011
 
PIC32MX Microcontroller Family
PIC32MX Microcontroller FamilyPIC32MX Microcontroller Family
PIC32MX Microcontroller Family
 
Debugging: Rules & Tools
Debugging: Rules & ToolsDebugging: Rules & Tools
Debugging: Rules & Tools
 
La comunidad
La comunidad La comunidad
La comunidad
 
ServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging LabServiceNow Knowledge11 Advanced Scripting & Debugging Lab
ServiceNow Knowledge11 Advanced Scripting & Debugging Lab
 
Infocomm Security: Software Bugs
Infocomm Security: Software BugsInfocomm Security: Software Bugs
Infocomm Security: Software Bugs
 
Software bugs
Software bugsSoftware bugs
Software bugs
 
Debugging Debugging
Debugging DebuggingDebugging Debugging
Debugging Debugging
 
0106 debugging
0106 debugging0106 debugging
0106 debugging
 
Error handling and debugging in vb
Error handling and debugging in vbError handling and debugging in vb
Error handling and debugging in vb
 
Advanced Debugging with GDB
Advanced Debugging with GDBAdvanced Debugging with GDB
Advanced Debugging with GDB
 
Islamabad recruitment company profile
Islamabad recruitment company profileIslamabad recruitment company profile
Islamabad recruitment company profile
 

Similar to How to become a .net debugging jedi (Microsoft R&D Center, Nazareth, Israel)

Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
elliando dias
 
How to really obfuscate your pdf malware
How to really obfuscate   your pdf malwareHow to really obfuscate   your pdf malware
How to really obfuscate your pdf malware
zynamics GmbH
 
How to really obfuscate your pdf malware
How to really obfuscate your pdf malwareHow to really obfuscate your pdf malware
How to really obfuscate your pdf malware
zynamics GmbH
 
Code Review
Code ReviewCode Review
Code Review
rantav
 

Similar to How to become a .net debugging jedi (Microsoft R&D Center, Nazareth, Israel) (20)

Debugging tricks you wish you knew Tamir Dresher - Odessa 2019
Debugging tricks you wish you knew   Tamir Dresher - Odessa 2019Debugging tricks you wish you knew   Tamir Dresher - Odessa 2019
Debugging tricks you wish you knew Tamir Dresher - Odessa 2019
 
Who’s afraid of WinDbg
Who’s afraid of WinDbgWho’s afraid of WinDbg
Who’s afraid of WinDbg
 
Writing clean code in C# and .NET
Writing clean code in C# and .NETWriting clean code in C# and .NET
Writing clean code in C# and .NET
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
.NET Debugging tricks you wish you knew tamir dresher
.NET Debugging tricks you wish you knew   tamir dresher.NET Debugging tricks you wish you knew   tamir dresher
.NET Debugging tricks you wish you knew tamir dresher
 
Introduction to TypeScript
Introduction to TypeScriptIntroduction to TypeScript
Introduction to TypeScript
 
Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214Testing, Learning and Professionalism — 20171214
Testing, Learning and Professionalism — 20171214
 
Don't let your tests slow you down
Don't let your tests slow you downDon't let your tests slow you down
Don't let your tests slow you down
 
Clean Code - The Next Chapter
Clean Code - The Next ChapterClean Code - The Next Chapter
Clean Code - The Next Chapter
 
Simple Ruby DSL Techniques: Big Project Impact!
Simple Ruby DSL Techniques: Big Project Impact!Simple Ruby DSL Techniques: Big Project Impact!
Simple Ruby DSL Techniques: Big Project Impact!
 
We Make Debugging Sucks Less
We Make Debugging Sucks LessWe Make Debugging Sucks Less
We Make Debugging Sucks Less
 
Toad tipstricksexpertinsight
Toad tipstricksexpertinsightToad tipstricksexpertinsight
Toad tipstricksexpertinsight
 
Demystifying Binary Reverse Engineering - Pixels Camp
Demystifying Binary Reverse Engineering - Pixels CampDemystifying Binary Reverse Engineering - Pixels Camp
Demystifying Binary Reverse Engineering - Pixels Camp
 
cinema_time_new.pdf
cinema_time_new.pdfcinema_time_new.pdf
cinema_time_new.pdf
 
How to really obfuscate your pdf malware
How to really obfuscate   your pdf malwareHow to really obfuscate   your pdf malware
How to really obfuscate your pdf malware
 
How to really obfuscate your pdf malware
How to really obfuscate your pdf malwareHow to really obfuscate your pdf malware
How to really obfuscate your pdf malware
 
Introduction of Tools for providing rich user experience in debugger
Introduction of Tools for providing rich user experience in debuggerIntroduction of Tools for providing rich user experience in debugger
Introduction of Tools for providing rich user experience in debugger
 
It's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspecIt's all about behaviour, also in php - phpspec
It's all about behaviour, also in php - phpspec
 
More about PHP
More about PHPMore about PHP
More about PHP
 
Code Review
Code ReviewCode Review
Code Review
 

More from Moaid Hathot

More from Moaid Hathot (20)

Demystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string HandlersDemystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string Handlers
 
Azure Bicep for Developers
Azure Bicep for DevelopersAzure Bicep for Developers
Azure Bicep for Developers
 
Demystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string HandlersDemystifying C#'s Interpolated string Handlers
Demystifying C#'s Interpolated string Handlers
 
ChatGPT and Beyond Using AI Tools to Enhance Academic Researc
ChatGPT and Beyond Using AI Tools to Enhance Academic ResearcChatGPT and Beyond Using AI Tools to Enhance Academic Researc
ChatGPT and Beyond Using AI Tools to Enhance Academic Researc
 
Dapr- Distributed Application Runtime
Dapr- Distributed Application RuntimeDapr- Distributed Application Runtime
Dapr- Distributed Application Runtime
 
What's coming in C# 11
What's coming in C# 11What's coming in C# 11
What's coming in C# 11
 
Introduction to .NET MAUI
Introduction to .NET MAUIIntroduction to .NET MAUI
Introduction to .NET MAUI
 
What's new in C# 11
What's new in C# 11What's new in C# 11
What's new in C# 11
 
Best of build 2021 - C# 10 & .NET 6
Best of build 2021 -  C# 10 & .NET 6Best of build 2021 -  C# 10 & .NET 6
Best of build 2021 - C# 10 & .NET 6
 
What's new in c# 10
What's new in c# 10What's new in c# 10
What's new in c# 10
 
Developer cloud roadmap keynote
Developer cloud roadmap keynoteDeveloper cloud roadmap keynote
Developer cloud roadmap keynote
 
What's new in c# 10
What's new in c# 10What's new in c# 10
What's new in c# 10
 
Intro to Azure Static Web Apps
Intro to Azure Static Web AppsIntro to Azure Static Web Apps
Intro to Azure Static Web Apps
 
About me - Atidna
About me - AtidnaAbout me - Atidna
About me - Atidna
 
About me - Rothschild Partnerships
About me - Rothschild PartnershipsAbout me - Rothschild Partnerships
About me - Rothschild Partnerships
 
What's coming in c# 9.0
What's coming in c# 9.0What's coming in c# 9.0
What's coming in c# 9.0
 
What's Coming in C# 9.0
What's Coming in C# 9.0What's Coming in C# 9.0
What's Coming in C# 9.0
 
Introduction to azure
Introduction to azureIntroduction to azure
Introduction to azure
 
Distributed Application Runtime (Dapr) - Azure Israel 2020
Distributed Application Runtime (Dapr) - Azure Israel 2020Distributed Application Runtime (Dapr) - Azure Israel 2020
Distributed Application Runtime (Dapr) - Azure Israel 2020
 
Dapr: distributed application runtime
Dapr: distributed application runtimeDapr: distributed application runtime
Dapr: distributed application runtime
 

Recently uploaded

Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Marc Lester
 

Recently uploaded (20)

Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdf
 
The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)
 
Abortion Clinic In Polokwane ](+27832195400*)[ 🏥 Safe Abortion Pills in Polok...
Abortion Clinic In Polokwane ](+27832195400*)[ 🏥 Safe Abortion Pills in Polok...Abortion Clinic In Polokwane ](+27832195400*)[ 🏥 Safe Abortion Pills in Polok...
Abortion Clinic In Polokwane ](+27832195400*)[ 🏥 Safe Abortion Pills in Polok...
 
^Clinic ^%[+27788225528*Abortion Pills For Sale In birch acres
^Clinic ^%[+27788225528*Abortion Pills For Sale In birch acres^Clinic ^%[+27788225528*Abortion Pills For Sale In birch acres
^Clinic ^%[+27788225528*Abortion Pills For Sale In birch acres
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
 
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
 
^Clinic ^%[+27788225528*Abortion Pills For Sale In harare
^Clinic ^%[+27788225528*Abortion Pills For Sale In harare^Clinic ^%[+27788225528*Abortion Pills For Sale In harare
^Clinic ^%[+27788225528*Abortion Pills For Sale In harare
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabber
 
Sinoville Clinic ](+27832195400*)[🏥Abortion Pill Prices Sinoville ● Women's A...
Sinoville Clinic ](+27832195400*)[🏥Abortion Pill Prices Sinoville ● Women's A...Sinoville Clinic ](+27832195400*)[🏥Abortion Pill Prices Sinoville ● Women's A...
Sinoville Clinic ](+27832195400*)[🏥Abortion Pill Prices Sinoville ● Women's A...
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea Goulet
 
Software Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements EngineeringSoftware Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements Engineering
 
^Clinic ^%[+27788225528*Abortion Pills For Sale In soweto
^Clinic ^%[+27788225528*Abortion Pills For Sale In soweto^Clinic ^%[+27788225528*Abortion Pills For Sale In soweto
^Clinic ^%[+27788225528*Abortion Pills For Sale In soweto
 
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
 
From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST API
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeCon
 
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
 

How to become a .net debugging jedi (Microsoft R&D Center, Nazareth, Israel)

Editor's Notes

  1. Remember to mention the kahoot it contest at the end Remember to ask about C# programmers, VS 2015 and VS 2017 RC
  2. Two branches One year for yokneam
  3. First one Thomas Edison – hardware bugs Popularized – Admiral Grace Hopper (Amazing Grace) when a moth caught in a relay. – this is a hardware bug
  4. Developers creates value by writing code. מתכנתים שמדבגים הם מתכנתים שלא מפיקים ערך. הרי מתכנת מפיק ערך בעזרת כתיבת קוד
  5. אנו חוזרים לעבר כדי להילחם בגרסה שלנו מלפני חודש ולנסות להבין מה לעזאזל רצינו לכתוב
  6. לתהליך יש שני חלקים. "מה לעזאזל" ו- "אהא!". "דיבג" זה הזמן בין שני החלקים הנ"ל
  7. אנו אנשי מקצוע. לנגר יש מסור ופטיש. לנו יש דיבאגר ו .
  8. אנו אנשי מקצוע. לנגר יש מסור ופטיש. לנו יש דיבאגר ו .
  9. Rubber duck debugging
  10. Rubber duck debugging
  11. F9 Ctrl + f10 Conditional Expressions Hit Count
  12. Special variabls
  13. Good for events and UI debugging
  14. With special variables
  15. Ctrl+B With class name Without class name Also for not loaded symbols Also for assemblies that are not ours **Can’t work with async methods**
  16. Performance.
  17. Performance.
  18. From MSDN” https://msdn.microsoft.com/en-us/library/windows/desktop/ms681675(v=vs.85).aspx
  19. From MSDN” https://msdn.microsoft.com/en-us/library/windows/desktop/ms681675(v=vs.85).aspx
  20. Can also be applied to an attributes Taken from referencesource.Microsoft.com
  21. Specially for objects that are out of scope Also works in immediate window
  22. From VS 2015 Immediate window is like the command Window. “>” will make it a command window. >log /[on|off] <filename> starts printing. >open <filename> opens files
  23. Can also be set on the assembly level (Target property must be used) [assembly: DebuggerDisplay("Name = {Name}; Team = {Team}; Languages = {ProgrammingLanguages}", Target = typeof(SoftwareEngineer))]
  24. Can also be set on the assembly level (Target property must be used) [assembly: DebuggerDisplay("Name = {Name}; Team = {Team}; Languages = {ProgrammingLanguages}", Target = typeof(SoftwareEngineer))]
  25. Can also be set on the assembly level (Target property must be used) [assembly: DebuggerDisplay("Name = {Name}; Team = {Team}; Languages = {ProgrammingLanguages}", Target = typeof(SoftwareEngineer))] Also work with ToString
  26. Use when need to fundamentally change the debugging view but not the type Usually private internal class to access internal and private fields Needs a constructor with original type Performance implication Should not has any attributes over it
  27. Show demo of Debugger Visualizer before moving slides
  28. Demo with Star wars pictures. Talk about DataFlow visualizer
  29. Demo with Star wars pictures.
  30. Freezing other threads (good if breakpoint triggered due to multiple threads) Renaming threads Pause debugger
  31. Visual Studio extension
  32. Visual Studio extension
  33. items.Where(i=>i.tags.Contains(“swift”)).ToList()
  34. Shared folders is good for copy paste
  35. Remember to filter Listens for window’s events.
  36. Remember to filter Listens for window’s events.
  37. Collapsed is default
  38. Collapsed is default
  39. MiniDump creation: WinDbg TaskManager AdPlus ProcDump OzCode Opening Dump Files WinDbg Visual Studio .pdb files containing debug information for your application Debugging symbols link runtime memory addresses to function names, source file names and line numbers Same directory as the executable Hard coded in the executable at compile time Symbol server cache directory Defined symbol server(s) Open DotPeek Add the required assembly Press start Symbol server In VS add new symbol source
  40. Collapsed is default
  41. My name is Moaid Hathot I’m a software developer and a consultant at CodeValue. CodeValue is a consulting company and we are also the proud development center of OzCode the amazing debugging extension for visual studio. So what are we really here for?
  42. My name is Moaid Hathot I’m a software developer and a consultant at CodeValue. CodeValue is a consulting company and we are also the proud development center of OzCode the amazing debugging extension for visual studio. So what are we really here for?