SlideShare une entreprise Scribd logo
1  sur  26
Télécharger pour lire hors ligne
THE BEST DEBUGGING TOOL –
YOUR BRAIN
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 1
Debugging?
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 2
Debugging is
easy!
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 3
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 4
Is debugging
really that easy?
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 5
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 6
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 7
http://geekandpoke.typepad.com/geekandpoke/2012/06/abstraction.html
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 8
Debugging is not
easy!*
*At least for all non-trivial bugs.
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 9
How to debug
effectively?
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 10
Step 1:
Know your tools.
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 11
There is more
than the
debugger.
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 12
Step 2:
Thinking about
the Problem…
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 13
Which business
process causes
the error?
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 14
What does the
error message
tell me?
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 15
Which system
causes the error?
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 16
Which software
layer?
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 17
Step 3:
…and the code.
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 18
Step 4:
Debugging as an
experiment
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 19
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 20
Design
experiment
Debug & test
assumptions
Refine
assumptions
<F5> vs. <F6>
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 21
Step 0:
The right mind
set.
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 22
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 23
Debugging is not
easy!*
*But there are approaches and
practices to help.
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 24
What do you
think / do?
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 25
http://scn.sap.com/community/abap/blog/2015/09/09/the-best-debugging-tool--your-brain
12.09.2015 The best debugging tool - your brain | Christian Drumm | #sitWro 26

Contenu connexe

Tendances

Iue slides 2015 final
Iue slides 2015 finalIue slides 2015 final
Iue slides 2015 finalBruce Shields
 
Repair or replace
Repair or replaceRepair or replace
Repair or replaceAbie Anarna
 
Creating and Running a Website – Best Practice and Common Mistakes
Creating and Running a Website – Best Practice and Common MistakesCreating and Running a Website – Best Practice and Common Mistakes
Creating and Running a Website – Best Practice and Common MistakesUlster University
 
Debugging WordPress for Site Owners
Debugging WordPress for Site OwnersDebugging WordPress for Site Owners
Debugging WordPress for Site OwnersAndrew Wikel
 
Guru overwhelm review
Guru overwhelm reviewGuru overwhelm review
Guru overwhelm reviewGuruOverwhelm
 
ATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
ATAGTR Keynote: I have a rock in my shoe - Navigating ImprovementATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
ATAGTR Keynote: I have a rock in my shoe - Navigating ImprovementMaaret Pyhäjärvi
 
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"LogeekNightUkraine
 
Htmlcssphx1018
Htmlcssphx1018Htmlcssphx1018
Htmlcssphx1018Thinkful
 
CLC Members’ Seminar 4th June 2015 - Own your technology - Ian Ross, CLC
CLC Members’ Seminar 4th June 2015 - Own your technology - Ian Ross, CLCCLC Members’ Seminar 4th June 2015 - Own your technology - Ian Ross, CLC
CLC Members’ Seminar 4th June 2015 - Own your technology - Ian Ross, CLCCharity Learning Consortium
 
Mistakes I Have Made: Collected Project Management Failures
Mistakes I Have Made: Collected Project Management FailuresMistakes I Have Made: Collected Project Management Failures
Mistakes I Have Made: Collected Project Management FailuresAmye Scavarda
 
Preserving Attention for Learning in the New Normal
Preserving Attention for Learning in the New NormalPreserving Attention for Learning in the New Normal
Preserving Attention for Learning in the New NormalJulie Dirksen
 
Whats and Hows
Whats and HowsWhats and Hows
Whats and Howsmindworks
 
Take home exams
Take home examsTake home exams
Take home examsKaren Dacy
 
How to increase productivity and eliminate mistakes fast
How to increase productivity and eliminate mistakes fastHow to increase productivity and eliminate mistakes fast
How to increase productivity and eliminate mistakes fastthebeachbumentrepreneur
 
Starting Off Right with WordPress- WP-BootCamp
Starting Off Right with WordPress- WP-BootCampStarting Off Right with WordPress- WP-BootCamp
Starting Off Right with WordPress- WP-BootCampHandsOnWP.com
 
Keeping lab notes as a software developer
Keeping lab notes as a software developerKeeping lab notes as a software developer
Keeping lab notes as a software developerJames McKay
 
ONA 2013 Design That Works session by Hong Qu
ONA 2013 Design That Works session by Hong QuONA 2013 Design That Works session by Hong Qu
ONA 2013 Design That Works session by Hong QuHong Qu
 

Tendances (20)

Iue slides 2015 final
Iue slides 2015 finalIue slides 2015 final
Iue slides 2015 final
 
Repair or replace
Repair or replaceRepair or replace
Repair or replace
 
Creating and Running a Website – Best Practice and Common Mistakes
Creating and Running a Website – Best Practice and Common MistakesCreating and Running a Website – Best Practice and Common Mistakes
Creating and Running a Website – Best Practice and Common Mistakes
 
Debugging WordPress for Site Owners
Debugging WordPress for Site OwnersDebugging WordPress for Site Owners
Debugging WordPress for Site Owners
 
Guru overwhelm review
Guru overwhelm reviewGuru overwhelm review
Guru overwhelm review
 
ATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
ATAGTR Keynote: I have a rock in my shoe - Navigating ImprovementATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
ATAGTR Keynote: I have a rock in my shoe - Navigating Improvement
 
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
Nhu Viet Nguyen "Why C++ is Becoming a Necessity for QA Automation"
 
Htmlcssphx1018
Htmlcssphx1018Htmlcssphx1018
Htmlcssphx1018
 
CLC Members’ Seminar 4th June 2015 - Own your technology - Ian Ross, CLC
CLC Members’ Seminar 4th June 2015 - Own your technology - Ian Ross, CLCCLC Members’ Seminar 4th June 2015 - Own your technology - Ian Ross, CLC
CLC Members’ Seminar 4th June 2015 - Own your technology - Ian Ross, CLC
 
RCCA
RCCARCCA
RCCA
 
Mistakes I Have Made: Collected Project Management Failures
Mistakes I Have Made: Collected Project Management FailuresMistakes I Have Made: Collected Project Management Failures
Mistakes I Have Made: Collected Project Management Failures
 
Preserving Attention for Learning in the New Normal
Preserving Attention for Learning in the New NormalPreserving Attention for Learning in the New Normal
Preserving Attention for Learning in the New Normal
 
Cynefin
CynefinCynefin
Cynefin
 
Whats and Hows
Whats and HowsWhats and Hows
Whats and Hows
 
Take home exams
Take home examsTake home exams
Take home exams
 
How to increase productivity and eliminate mistakes fast
How to increase productivity and eliminate mistakes fastHow to increase productivity and eliminate mistakes fast
How to increase productivity and eliminate mistakes fast
 
Cure for pimples
Cure for pimplesCure for pimples
Cure for pimples
 
Starting Off Right with WordPress- WP-BootCamp
Starting Off Right with WordPress- WP-BootCampStarting Off Right with WordPress- WP-BootCamp
Starting Off Right with WordPress- WP-BootCamp
 
Keeping lab notes as a software developer
Keeping lab notes as a software developerKeeping lab notes as a software developer
Keeping lab notes as a software developer
 
ONA 2013 Design That Works session by Hong Qu
ONA 2013 Design That Works session by Hong QuONA 2013 Design That Works session by Hong Qu
ONA 2013 Design That Works session by Hong Qu
 

En vedette

ABAP Code Retreat Frankfurt 2016: TDD - Test Driven Development
ABAP Code Retreat Frankfurt 2016: TDD - Test Driven DevelopmentABAP Code Retreat Frankfurt 2016: TDD - Test Driven Development
ABAP Code Retreat Frankfurt 2016: TDD - Test Driven DevelopmentHendrik Neumann
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftChristian Drumm
 
ABAPCodeRetreat - ABAP PUSH CHANNELS and SAP FIORI
ABAPCodeRetreat -   ABAP PUSH CHANNELS and SAP FIORIABAPCodeRetreat -   ABAP PUSH CHANNELS and SAP FIORI
ABAPCodeRetreat - ABAP PUSH CHANNELS and SAP FIORIABAPCodeRetreat
 
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...Virtual Forge
 
TDD in the ABAP world - sitNL 2013 edition
TDD in the ABAP world - sitNL 2013 editionTDD in the ABAP world - sitNL 2013 edition
TDD in the ABAP world - sitNL 2013 editionHendrik Neumann
 
ABAP T codes
ABAP T codesABAP T codes
ABAP T codesPavan Das
 
ABAPCodeRetreat - TDD Intro by Damir Majer
ABAPCodeRetreat - TDD Intro by Damir MajerABAPCodeRetreat - TDD Intro by Damir Majer
ABAPCodeRetreat - TDD Intro by Damir MajerABAPCodeRetreat
 
ABAPCodeRetreat 23.7.2016 - Unit Testing
ABAPCodeRetreat 23.7.2016 - Unit TestingABAPCodeRetreat 23.7.2016 - Unit Testing
ABAPCodeRetreat 23.7.2016 - Unit TestingABAPCodeRetreat
 

En vedette (9)

ABAP Code Retreat Frankfurt 2016: TDD - Test Driven Development
ABAP Code Retreat Frankfurt 2016: TDD - Test Driven DevelopmentABAP Code Retreat Frankfurt 2016: TDD - Test Driven Development
ABAP Code Retreat Frankfurt 2016: TDD - Test Driven Development
 
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der ZukunftTest-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
Test-getriebene Entwicklung in ABAP – Das Entwicklungsmodell der Zukunft
 
ABAPCodeRetreat - ABAP PUSH CHANNELS and SAP FIORI
ABAPCodeRetreat -   ABAP PUSH CHANNELS and SAP FIORIABAPCodeRetreat -   ABAP PUSH CHANNELS and SAP FIORI
ABAPCodeRetreat - ABAP PUSH CHANNELS and SAP FIORI
 
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
Case Study: Automated Code Reviews In A Grown SAP Application Landscape At EW...
 
ABAP Unit and TDD
ABAP Unit and TDDABAP Unit and TDD
ABAP Unit and TDD
 
TDD in the ABAP world - sitNL 2013 edition
TDD in the ABAP world - sitNL 2013 editionTDD in the ABAP world - sitNL 2013 edition
TDD in the ABAP world - sitNL 2013 edition
 
ABAP T codes
ABAP T codesABAP T codes
ABAP T codes
 
ABAPCodeRetreat - TDD Intro by Damir Majer
ABAPCodeRetreat - TDD Intro by Damir MajerABAPCodeRetreat - TDD Intro by Damir Majer
ABAPCodeRetreat - TDD Intro by Damir Majer
 
ABAPCodeRetreat 23.7.2016 - Unit Testing
ABAPCodeRetreat 23.7.2016 - Unit TestingABAPCodeRetreat 23.7.2016 - Unit Testing
ABAPCodeRetreat 23.7.2016 - Unit Testing
 

Similaire à The best debugging tool - your brain

How to Run Great Webinars Workshop
How to Run Great Webinars WorkshopHow to Run Great Webinars Workshop
How to Run Great Webinars WorkshopALATechSource
 
Pushing traditional manufacturers towards agile hardware manufacturing with D...
Pushing traditional manufacturers towards agile hardware manufacturing with D...Pushing traditional manufacturers towards agile hardware manufacturing with D...
Pushing traditional manufacturers towards agile hardware manufacturing with D...Product of Things
 
How to brainstorm
How to brainstormHow to brainstorm
How to brainstormdrewz lin
 
‘Tis Better To Be Effective Than Efficient
‘Tis Better To Be Effective Than Efficient‘Tis Better To Be Effective Than Efficient
‘Tis Better To Be Effective Than EfficientSynerzip
 
ITAM AUS 2017 The Long Way Round: from chaos to cohesion
ITAM AUS 2017 The Long Way Round: from chaos to cohesionITAM AUS 2017 The Long Way Round: from chaos to cohesion
ITAM AUS 2017 The Long Way Round: from chaos to cohesionMartin Thompson
 
AndroidTO deck
AndroidTO deckAndroidTO deck
AndroidTO deckchaseman
 
Keynote Day 1 - Atlassian Summit 2012
Keynote Day 1 - Atlassian Summit 2012Keynote Day 1 - Atlassian Summit 2012
Keynote Day 1 - Atlassian Summit 2012Atlassian
 

Similaire à The best debugging tool - your brain (8)

How to Run Great Webinars Workshop
How to Run Great Webinars WorkshopHow to Run Great Webinars Workshop
How to Run Great Webinars Workshop
 
Pushing traditional manufacturers towards agile hardware manufacturing with D...
Pushing traditional manufacturers towards agile hardware manufacturing with D...Pushing traditional manufacturers towards agile hardware manufacturing with D...
Pushing traditional manufacturers towards agile hardware manufacturing with D...
 
How to brainstorm
How to brainstormHow to brainstorm
How to brainstorm
 
‘Tis Better To Be Effective Than Efficient
‘Tis Better To Be Effective Than Efficient‘Tis Better To Be Effective Than Efficient
‘Tis Better To Be Effective Than Efficient
 
ITAM AUS 2017 The Long Way Round: from chaos to cohesion
ITAM AUS 2017 The Long Way Round: from chaos to cohesionITAM AUS 2017 The Long Way Round: from chaos to cohesion
ITAM AUS 2017 The Long Way Round: from chaos to cohesion
 
Software craftsmanship
Software craftsmanshipSoftware craftsmanship
Software craftsmanship
 
AndroidTO deck
AndroidTO deckAndroidTO deck
AndroidTO deck
 
Keynote Day 1 - Atlassian Summit 2012
Keynote Day 1 - Atlassian Summit 2012Keynote Day 1 - Atlassian Summit 2012
Keynote Day 1 - Atlassian Summit 2012
 

Dernier

BATbern52 Swisscom's Journey into Data Mesh
BATbern52 Swisscom's Journey into Data MeshBATbern52 Swisscom's Journey into Data Mesh
BATbern52 Swisscom's Journey into Data MeshBATbern
 
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsMUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsUniversity of Antwerp
 
Boost Efficiency: Sabre API Integration Made Easy
Boost Efficiency: Sabre API Integration Made EasyBoost Efficiency: Sabre API Integration Made Easy
Boost Efficiency: Sabre API Integration Made Easymichealwillson701
 
Leveling Up your Branding and Mastering MERN: Fullstack WebDev
Leveling Up your Branding and Mastering MERN: Fullstack WebDevLeveling Up your Branding and Mastering MERN: Fullstack WebDev
Leveling Up your Branding and Mastering MERN: Fullstack WebDevpmgdscunsri
 
Steps to Successfully Hire Ionic Developers
Steps to Successfully Hire Ionic DevelopersSteps to Successfully Hire Ionic Developers
Steps to Successfully Hire Ionic Developersmichealwillson701
 
MinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
MinionLabs_Mr. Gokul Srinivas_Young EntrepreneurMinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
MinionLabs_Mr. Gokul Srinivas_Young EntrepreneurPriyadarshini T
 
Revolutionize Your Field Service Management with FSM Grid
Revolutionize Your Field Service Management with FSM GridRevolutionize Your Field Service Management with FSM Grid
Revolutionize Your Field Service Management with FSM GridMathew Thomas
 
Technical improvements. Reasons. Methods. Estimations. CJ
Technical improvements.  Reasons. Methods. Estimations. CJTechnical improvements.  Reasons. Methods. Estimations. CJ
Technical improvements. Reasons. Methods. Estimations. CJpolinaucc
 
VuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckVuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckNaval Singh
 
Unlocking AI: Navigating Open Source vs. Commercial Frontiers
Unlocking AI:Navigating Open Source vs. Commercial FrontiersUnlocking AI:Navigating Open Source vs. Commercial Frontiers
Unlocking AI: Navigating Open Source vs. Commercial FrontiersRaphaël Semeteys
 
User Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeUser Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeKaylee Miller
 
renewable energy renewable energy renewable energy renewable energy
renewable energy renewable energy renewable energy  renewable energyrenewable energy renewable energy renewable energy  renewable energy
renewable energy renewable energy renewable energy renewable energyjeyasrig
 
Mobile App Development process | Expert Tips
Mobile App Development process | Expert TipsMobile App Development process | Expert Tips
Mobile App Development process | Expert Tipsmichealwillson701
 
Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfICS
 
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfFlutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfMind IT Systems
 
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
BusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptxBusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptx
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptxAGATSoftware
 
Mobile App Development company Houston
Mobile  App  Development  company HoustonMobile  App  Development  company Houston
Mobile App Development company Houstonjennysmithusa549
 
8 key point on optimizing web hosting services in your business.pdf
8 key point on optimizing web hosting services in your business.pdf8 key point on optimizing web hosting services in your business.pdf
8 key point on optimizing web hosting services in your business.pdfOffsiteNOC
 
openEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleopenEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleShane Coughlan
 
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...telebusocialmarketin
 

Dernier (20)

BATbern52 Swisscom's Journey into Data Mesh
BATbern52 Swisscom's Journey into Data MeshBATbern52 Swisscom's Journey into Data Mesh
BATbern52 Swisscom's Journey into Data Mesh
 
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsMUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
 
Boost Efficiency: Sabre API Integration Made Easy
Boost Efficiency: Sabre API Integration Made EasyBoost Efficiency: Sabre API Integration Made Easy
Boost Efficiency: Sabre API Integration Made Easy
 
Leveling Up your Branding and Mastering MERN: Fullstack WebDev
Leveling Up your Branding and Mastering MERN: Fullstack WebDevLeveling Up your Branding and Mastering MERN: Fullstack WebDev
Leveling Up your Branding and Mastering MERN: Fullstack WebDev
 
Steps to Successfully Hire Ionic Developers
Steps to Successfully Hire Ionic DevelopersSteps to Successfully Hire Ionic Developers
Steps to Successfully Hire Ionic Developers
 
MinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
MinionLabs_Mr. Gokul Srinivas_Young EntrepreneurMinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
MinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
 
Revolutionize Your Field Service Management with FSM Grid
Revolutionize Your Field Service Management with FSM GridRevolutionize Your Field Service Management with FSM Grid
Revolutionize Your Field Service Management with FSM Grid
 
Technical improvements. Reasons. Methods. Estimations. CJ
Technical improvements.  Reasons. Methods. Estimations. CJTechnical improvements.  Reasons. Methods. Estimations. CJ
Technical improvements. Reasons. Methods. Estimations. CJ
 
VuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckVuNet software organisation powerpoint deck
VuNet software organisation powerpoint deck
 
Unlocking AI: Navigating Open Source vs. Commercial Frontiers
Unlocking AI:Navigating Open Source vs. Commercial FrontiersUnlocking AI:Navigating Open Source vs. Commercial Frontiers
Unlocking AI: Navigating Open Source vs. Commercial Frontiers
 
User Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeUser Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller Resume
 
renewable energy renewable energy renewable energy renewable energy
renewable energy renewable energy renewable energy  renewable energyrenewable energy renewable energy renewable energy  renewable energy
renewable energy renewable energy renewable energy renewable energy
 
Mobile App Development process | Expert Tips
Mobile App Development process | Expert TipsMobile App Development process | Expert Tips
Mobile App Development process | Expert Tips
 
Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdf
 
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfFlutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
 
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
BusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptxBusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptx
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
 
Mobile App Development company Houston
Mobile  App  Development  company HoustonMobile  App  Development  company Houston
Mobile App Development company Houston
 
8 key point on optimizing web hosting services in your business.pdf
8 key point on optimizing web hosting services in your business.pdf8 key point on optimizing web hosting services in your business.pdf
8 key point on optimizing web hosting services in your business.pdf
 
openEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleopenEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scale
 
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
 

The best debugging tool - your brain

Notes de l'éditeur

  1. Why do I want to talk about debugging here?
  2. Debugging is easy, right? Everybody knows how to do it!
  3. Simply set a break point in your tool of choice, execute the program and you are debugging.
  4. If it is easy why do even seasoned developers getting lost in the debugger, pondering over an issue for hours or days without being close to a solution.
  5. CRM Problem I was working on recently. Context menu opens up in some search results but not in the agent inbox.
  6. Think about a possible Fiori system architecture, SAP HANA XS in a side by side scenario (taken from help.sap.com) Different languages (HTML5, ABAP, JavaScript) Different protocols Different systems Different applications Different frameworks Different supporting processes
  7. This is only on the highest level. If I dig deeper in a SAP system (at least the once I currently work with: IS-U and CRM) I usually get the feeling similar to the this comic.
  8. The question is: How to debug effectively:
  9. If we focus on ABAP : Different approaches for finding the source code where a message is raised Features of the new ABAP debugger Debugger variants Saving parameters for se37  possible to use as test data for unit test? Conditional break points and Watchpoints Debugger scripting ATC Read on SCN; try out what you read Similar for other languages
  10. Recently I adopted the habit to reply to questions by colleague with a general response: Have you already searched on SCN and in the SAP support portal? In a lot of cases the answer is no. However, in my opinion searching for hints in SCN and the SAP support portal should be the first step whenever you encounter a complex bug. Although SAP software is highly customizable and probably no two installations are the same those searches usually result in valuable information. Even if you won't find the complete solution you will at least get information in which areas the cause of the bug might be. And last, but not least, also an internet search usually turns up some interesting links. Know how to search on the support portal Google
  11. First step is normally to reproduce the error in the QA system. Once I’m able to reproduce the error I won’t start up the debugger immediately. Instead I start to reason about the problem. This I usually organize around some general questions.
  12. What is the business process and the context causing the error? Do I understand the business process? Without this it might be really difficult to indentifiy a bug
  13. In the case of a dump this is pretty easy. The details of the dump clearly show what happened and where it happened. in the case of an error message Is a long text with detailed explanations is available? Most error massages don't have an detailed description available. But if a detailed description is available it is usually quite helpful. Even the error messages without detailed descriptions can be very helpful. Learn the patterns in your application pattern "...<some key value> not available." or "....<some key value> is not valid."  missing customizing. "The standard address of a business partner can not be deleted"  problem in the process flow.
  14. Not necessarily a trivial question Recall the Fiori architecture diagram Integrated CRM – ERP scenario
  15. Once the system causing an error is identified, it is important to understand in which layer of the software the error occurs. each layer has different responsibilities provide the UI perform validation checks access the database) For example, in a SAP CRM application the error could occur in the BSP component building the UI, the BOL layer the GenIL layer the underlying APIs. Understanding on which layer an error occurs helps to take short cuts while debugging. If the error occurs in the database access layer it's probably a good idea to not perform detailed debugging on the UI layer.
  16. After answering the question mentioned in the previous section I usually have a first idea in which part of the software the error occurs. navigating through the source code try to come up with a first assumption what the program code is supposed to do and which execution path leads to the error. first assumption what I would expect to see in the debugger Test my assumptions I have come up with so far. might not be sensible approach in all cases.
  17. After all the thinking it is time to get to work and start up the debugger. I try to thinks about debugging as performing an experiment.
  18. simply performing the business process that causes the error. Especially if an error occurs in a complex business process it might be better to find a way to test the assumptions without performing the whole complex process. execute the "experiment" in order to test the assumptions. This basically is the normal debugging everyone is used to. If the root cause of the problem is identified during debugging the cycle ends here. If not, the final step of the cycle is to refine the assumptions based on the insights gained during the debugging. On the basis of  the new assumptions we can redesign the experiment and start the cycle over again. move forward in small increments. change to many parameters between to debugging sessions  very difficult to identify the cause of a different system behaviour. E.g.error occurs during the address formatting for a business partner. first test the code for the address formatting with a BP of type person after that with a BP of type organization with the same address. This will enable to check if the BP type is part of the formatting problem or not.
  19. In order to decide if to step into a particular function or method or to step over it I use a simple heuristic that has proven very useful for me: The more individual a function or method is the more likely is it to use <F5> The more widely used a function or method is the more likely is it to use <F6>. Using this heuristic basically leads to the following results: I will almost always inspect custom code using <F5>. the only exception is that I'm sure the function or method is not the cause of the problem. I will only debug SAP standard code if I wasn't able to identify the root cause of a problem in the custom code. I will basically never debug widely used standard function modules an methods and instead focus on new ones (e.g. those delivered recently with a new EhP). As an example consider an error in some SEPA (https://en.wikipedia.org/wiki/Single_Euro_Payments_Area) related functionality. When debugging this error I would first focus on the custom code around SEPA. If this doesn't lead to the root cause of the error I would start also debugging SEPA related standard functions and methods. If I would encounter function modules like BAPI_BUPA_ADDRESS_GETDETAIL or GUID_CREATE in the process I would always step over them using <F6>. These function modules are so common that it is highly unlikely they are the root cause of the problem. rare cases everything points to a function module or method like e.g. BAPI_BUPA_ADDRESS_GETDETAIL as the root cause of an error. check the SAP support portal first before debugging these function modules or methods. As these are widely used for quite some time it is highly unlikely I'm the first one encountering the given problem. Only if everything else fails I would start debugging those function modules or methods as a last resort. Different approaches: Look at the call stack first. Find the enhancements, Z-Implementations Binary debugging
  20. SAP is not stupid nor mean  What is the underlying reason for some code  fosters better understanding Most important technique sometimes is to step back