debugging like a pro - columbia universityjae/3157-last/files/debugging.pdf · • no one wants to...

44
Debugging like the Pros 3157 Hackathon | 10/9/15

Upload: others

Post on 08-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Debugging like the Pros3157 Hackathon | 10/9/15

Page 2: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 3: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 4: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Use printf()TIP #1

Page 5: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 6: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Use printf()

Page 7: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Use printf()

• Check yourself: what values are actually being passed into / returned from functions?

Page 8: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Use printf()

• Check yourself: what values are actually being passed into / returned from functions?

• You should know the value of all variables at all times!

Page 9: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Use fprintf(stderr)TIP #2

Page 10: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Use fprintf(stderr)

Page 11: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Use fprintf(stderr)• stdin is buffered, so output may not be

displayed immediately (or at all!)

Page 12: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Use fprintf(stderr)• stdin is buffered, so output may not be

displayed immediately (or at all!)

• stderr is not buffered, so all statements are outputted immediately

Page 13: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

// is your friendTIP #3

Page 14: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 15: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

// is your friend

Page 16: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

// is your friend

• Multiple errors can be cause by one bug!

Page 17: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

// is your friend

• Multiple errors can be cause by one bug!

• Address the first error first

Page 18: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

DRAW A PICTURE!!!TIP #4

Page 19: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 20: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 21: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 22: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 23: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

DRAW A PICTURE!!!

Page 24: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

DRAW A PICTURE!!!

• Map out memory, pointers, and variables

Page 25: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

DRAW A PICTURE!!!

• Map out memory, pointers, and variables

• Follow the data!

Page 26: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Errors cause each otherTIP #5

Page 27: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Errors cause each other

Page 28: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Errors cause each other

• Multiple errors can be cause by one bug!

Page 29: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Errors cause each other

• Multiple errors can be cause by one bug!

• Address the first error first

Page 30: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Become a Valgrind DetectiveTIP #6

Page 31: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 32: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Become a Valgrind Detective

Page 33: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Become a Valgrind Detective• All those errors? They’re actually clues!

Page 34: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Become a Valgrind Detective• All those errors? They’re actually clues!

• Line numbers

Page 35: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Become a Valgrind Detective• All those errors? They’re actually clues!

• Line numbers

• Error text

Page 36: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Become a Valgrind Detective• All those errors? They’re actually clues!

• Line numbers

• Error text

• Number of errors

Page 37: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Test early, test often.TIP #7

Page 38: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 39: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Test early, test often.

Page 40: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Test early, test often.

• No one wants to be overwhelmed with GCC errors or memory leaks

Page 41: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Test early, test often.

• No one wants to be overwhelmed with GCC errors or memory leaks

• Code incrementally

Page 42: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 43: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging
Page 44: Debugging like a Pro - Columbia Universityjae/3157-LAST/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging

Debugging like the Pros3157 Hackathon | 10/9/15