![Page 1: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/1.jpg)
Debugging like the Pros3157 Hackathon | 10/9/15
![Page 2: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/2.jpg)
![Page 3: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/3.jpg)
![Page 4: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/4.jpg)
Use printf()TIP #1
![Page 5: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/5.jpg)
![Page 6: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/6.jpg)
Use printf()
![Page 7: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/7.jpg)
Use printf()
• Check yourself: what values are actually being passed into / returned from functions?
![Page 8: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/8.jpg)
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 - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/9.jpg)
Use fprintf(stderr)TIP #2
![Page 10: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/10.jpg)
Use fprintf(stderr)
![Page 11: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/11.jpg)
Use fprintf(stderr)• stdin is buffered, so output may not be
displayed immediately (or at all!)
![Page 12: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/12.jpg)
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 - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/13.jpg)
// is your friendTIP #3
![Page 14: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/14.jpg)
![Page 15: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/15.jpg)
// is your friend
![Page 16: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/16.jpg)
// is your friend
• Multiple errors can be cause by one bug!
![Page 17: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/17.jpg)
// is your friend
• Multiple errors can be cause by one bug!
• Address the first error first
![Page 18: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/18.jpg)
DRAW A PICTURE!!!TIP #4
![Page 19: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/19.jpg)
![Page 20: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/20.jpg)
![Page 21: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/21.jpg)
![Page 22: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/22.jpg)
![Page 23: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/23.jpg)
DRAW A PICTURE!!!
![Page 24: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/24.jpg)
DRAW A PICTURE!!!
• Map out memory, pointers, and variables
![Page 25: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/25.jpg)
DRAW A PICTURE!!!
• Map out memory, pointers, and variables
• Follow the data!
![Page 26: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/26.jpg)
Errors cause each otherTIP #5
![Page 27: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/27.jpg)
Errors cause each other
![Page 28: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/28.jpg)
Errors cause each other
• Multiple errors can be cause by one bug!
![Page 29: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/29.jpg)
Errors cause each other
• Multiple errors can be cause by one bug!
• Address the first error first
![Page 30: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/30.jpg)
Become a Valgrind DetectiveTIP #6
![Page 31: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/31.jpg)
![Page 32: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/32.jpg)
Become a Valgrind Detective
![Page 33: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/33.jpg)
Become a Valgrind Detective• All those errors? They’re actually clues!
![Page 34: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/34.jpg)
Become a Valgrind Detective• All those errors? They’re actually clues!
• Line numbers
![Page 35: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/35.jpg)
Become a Valgrind Detective• All those errors? They’re actually clues!
• Line numbers
• Error text
![Page 36: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/36.jpg)
Become a Valgrind Detective• All those errors? They’re actually clues!
• Line numbers
• Error text
• Number of errors
![Page 37: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/37.jpg)
Test early, test often.TIP #7
![Page 38: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/38.jpg)
![Page 39: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/39.jpg)
Test early, test often.
![Page 40: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/40.jpg)
Test early, test often.
• No one wants to be overwhelmed with GCC errors or memory leaks
![Page 41: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/41.jpg)
Test early, test often.
• No one wants to be overwhelmed with GCC errors or memory leaks
• Code incrementally
![Page 42: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/42.jpg)
![Page 43: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/43.jpg)
![Page 44: Debugging like a Pro - cs.columbia.edujae/3136/files/debugging.pdf · • No one wants to be overwhelmed with GCC errors or memory leaks • Code incrementally. Debugging like the](https://reader034.vdocuments.mx/reader034/viewer/2022052100/603a3910699b5f723451feb5/html5/thumbnails/44.jpg)
Debugging like the Pros3157 Hackathon | 10/9/15