×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Bug Hunt @mukkoo
Slide 2
Slide 2 text
@mukkoo
Slide 3
Slide 3 text
dev.welaika.com @mukkoo
Slide 4
Slide 4 text
@mukkoo
Slide 5
Slide 5 text
debugging instinct @mukkoo
Slide 6
Slide 6 text
@mukkoo
Slide 7
Slide 7 text
@mukkoo I know how to fix it!
Slide 8
Slide 8 text
@mukkoo
Slide 9
Slide 9 text
debugging instinct @mukkoo debugging tools/xp
Slide 10
Slide 10 text
recap no super heroes, no unicorns @mukkoo no instinct debugging tools and experience
Slide 11
Slide 11 text
debugging patterns @mukkoo
Slide 12
Slide 12 text
@mukkoo Containment, sometimes, takes priority over fix
Slide 13
Slide 13 text
@mukkoo we work only with facts
Slide 14
Slide 14 text
@mukkoo observable attributes
Slide 15
Slide 15 text
@mukkoo isolation and reproduction
Slide 16
Slide 16 text
@mukkoo fix it!
Slide 17
Slide 17 text
recap observe @mukkoo choose tools and strategy fix it
Slide 18
Slide 18 text
bugs taxonomy @mukkoo
Slide 19
Slide 19 text
@mukkoo observable attributes i can reproduce it locally it seems to affect only one area #1
Slide 20
Slide 20 text
@mukkoo bohrbug deterministic, highly reproducible #1
Slide 21
Slide 21 text
@mukkoo bohrbug lives in the code LIKES hide them IN complex FUNCTIONS, CLASSES OR CONFIGURATIONS #1
Slide 22
Slide 22 text
@mukkoo tools #1 factories fixtures local tests
Slide 23
Slide 23 text
@mukkoo reproduction & resolution #1 replicate bug conditions locally test it write simplest solution refactoring for more readability
Slide 24
Slide 24 text
@mukkoo bohrbug #1 FIxed
Slide 25
Slide 25 text
@mukkoo observable attributes something that has always worked seems to have never worked #2
Slide 26
Slide 26 text
@mukkoo schrödinbug looks like leaf #2
Slide 27
Slide 27 text
@mukkoo schrödinbug pretend to be working code on close inspection reveal itself like a bug #2
Slide 28
Slide 28 text
@mukkoo schrödinbug two types: - had never worked - works in a different way you think #2
Slide 29
Slide 29 text
@mukkoo tools #2 LOGS to verify BISECT
Slide 30
Slide 30 text
@mukkoo reproduction & resolution #2 REPRODUCE bugGED STATE locally AND IN TESTS ADD LOGS FIND When it was introduced WRITE TESTS AND FIX IT
Slide 31
Slide 31 text
@mukkoo schrödinbug #2 FIxed
Slide 32
Slide 32 text
@mukkoo observable attributes APPEARS NON DETERMINISTIC seems to DISAPPEAR WHEN OBSERVED #3
Slide 33
Slide 33 text
@mukkoo heisenbug CAN YOU SEE IT? #3
Slide 34
Slide 34 text
@mukkoo heisenbug lives in the code, debugging tools modify code and execution #3
Slide 35
Slide 35 text
@mukkoo heisenbug or lives in the data and you can only see the bug on production #3
Slide 36
Slide 36 text
@mukkoo tools #3 profiling and metrics FLAMEGRAPHS
Slide 37
Slide 37 text
@mukkoo
Slide 38
Slide 38 text
@mukkoo reproduction & resolution #3 use profiling to find it use real data to reproduce recreate the state in tests follow bohrbug instructions
Slide 39
Slide 39 text
@mukkoo heisenberg #3 FIxed
Slide 40
Slide 40 text
@mukkoo observable attributes everything is broken #4
Slide 41
Slide 41 text
@mukkoo mandelbug random and Infinite reproduction #4
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
@mukkoo mandelbug lives in your system #4
Slide 44
Slide 44 text
@mukkoo tools #4 server tools DF -h
Slide 45
Slide 45 text
@mukkoo reproduction & resolution #4 monitoring access to server restart, rotate or kill
Slide 46
Slide 46 text
@mukkoo mandelbug #4 FIxed
Slide 47
Slide 47 text
RECAP @mukkoo
Slide 48
Slide 48 text
@mukkoo observe and classify
Slide 49
Slide 49 text
@mukkoo reproduce and isolate
Slide 50
Slide 50 text
@mukkoo test and fix it
Slide 51
Slide 51 text
@mukkoo build your own toolkit
Slide 52
Slide 52 text
Q&A thank you all @mukkoo