Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Debugging

 Debugging

Presentation about debugging for people just learning to program.

sharnik

June 17, 2015
Tweet

More Decks by sharnik

Other Decks in Programming

Transcript

  1. Wojciech
    @sharnik
    haikuco.de

    View Slide

  2. Programming
    is like riding a bike.

    View Slide

  3. Except the bike is on
    fire and you're on
    fire and everything
    is on fire and you're
    actually in hell.

    View Slide

  4. View Slide

  5. Main programming tasks:
    » Adding bugs
    » Removing bugs

    View Slide

  6. Debugging

    View Slide

  7. Know
    what you're
    trying to do

    View Slide

  8. Inputs -> Program -> Outputs
    Calculator.add(2, 3)
    # => 5

    View Slide

  9. Workflow

    View Slide

  10. Reproduce the
    error

    View Slide

  11. Make a
    hypothesis

    View Slide

  12. Fix

    View Slide

  13. Profit

    View Slide

  14. If that didn't help,
    rollback

    View Slide

  15. Techniques

    View Slide

  16. Puts debugging
    class Calculator
    def add(a, b)
    puts a
    puts b
    a + b
    end
    end
    result = Calculator.new.add(2, 3)
    puts result

    View Slide

  17. strings vs numbers
    ruby -e "x = 3; puts x"
    # => 3
    ruby -e "x = '3'; puts x"
    # => 3
    ruby -e "x = 3; puts x.inspect"
    # => 3
    ruby -e "x = '3'; puts x.inspect"
    # => "3"

    View Slide

  18. p: shorter puts X.inspect
    class Calculator
    def add(a, b)
    p a
    p b
    a + b
    end
    end
    result = Calculator.new.add(2, 3)
    p result

    View Slide

  19. debugger: pry + byebug
    require 'pry-byebug'
    class Calculator
    def add(a, b)
    binding.pry
    a + b
    end
    end
    Calculator.new.add(2, 3)

    View Slide

  20. Strategies

    View Slide

  21. "Wolf fence"
    algorithm

    View Slide

  22. Rubber duck
    debugging

    View Slide

  23. Practice

    View Slide

  24. Exercise
    gist.github.com/sharnik/2aedd681e6bcf81a7697
    Remember
    » understand expectations
    » pinpoint where the bug is
    » find what the bug is
    » fix it

    View Slide