Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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