© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Debugging & Profiling
2© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
What to Expect?
Debugging
Various Techniques
Using...
3© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Debugging
4© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Ways of Debugging
Basic: Printing
Querying
Kernel ...
5© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Debugger: gdb
Text mode debugger
Repetition of pre...
6© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Debugging Strategies
Oh no!!! Another tool to...
7© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
'gdb' Usage
Compile with -g option
gcc -g file.c -...
8© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Examining Source Files
list <line>
Print 10 l...
9© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Other ways of Running
step [ count ] – step i...
10© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Breakpoints
info break – Show list & status ...
11© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Examining the Stack
Stack grows down
Each ca...
12© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Examining Data
print[/xduotcf] <expr>
Evalua...
13© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Other Examinations
Watchpoints / Catchpoints...
14© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Shortcuts
Just enough of command
To make it ...
15© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Miscellaneous
Set editmode for gdb command l...
16© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Thread Debugging
Automatic notification of n...
17© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
gdb: Multi-Process Debugging
gdb version >= 7.1
M...
18© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Let's Debug
Debug
debugging_cprog.c
find_the_bug....
19© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
User Process Memory Debugging
ElectricFence → DUM...
20© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Profiling
21© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
W's of Profiling
Analyzing & Understanding Progra...
22© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Profiling Categories
Program Check
Static (splint...
23© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Static Program Checkers
Compiler itself
Really fa...
24© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
'splint' detects
Memory related Problems
Derefere...
25© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
'splint' Usage
Run splint (with desired options)
...
26© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Dynamic Program Checkers
Memory Debugging
mtrace ...
27© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Code Coverage
Dynamic Execution Flow Analysis
Don...
28© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
'gcov' Usage
Compile with -fprofile-arcs -ftest-c...
29© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Performance Analysis
Dynamic Execution Time Analy...
30© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
'gprof' Usage
Compile with -pg option
gcc -pg fil...
31© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Interesting 'gprof' Options
-b # Brief output
-p ...
32© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Tool Suite: valgrind
Provides a number of debuggi...
33© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
valgrind: Memcheck detects
Touching “shouldn’t” m...
34© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
'valgrind' Usage
Compile with -g option
gcc -g fi...
35© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
What all have we learnt?
Debugging
Various Techni...
36© 2010-15 SysPlay Workshops <workshop@sysplay.in>
All Rights Reserved.
Any Queries?
Upcoming SlideShare
Loading in...5
×

Linux User Space Debugging & Profiling

6,814

Published on

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,814
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Linux User Space Debugging & Profiling

  1. 1. © 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Debugging & Profiling
  2. 2. 2© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What to Expect? Debugging Various Techniques Using Debugger: gdb Profiling using Program Checkers Code Coverage Tools Performance Analyzers
  3. 3. 3© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Debugging
  4. 4. 4© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Ways of Debugging Basic: Printing Querying Kernel Windows: /proc, /sys Using Commands like ipcs Tracing: strace Debugger: gdb
  5. 5. 5© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Debugger: gdb Text mode debugger Repetition of previous command Very powerful All kind of options: Breakpoint, Watch, ... Extensive Help GUI interfaces: ddd, ...
  6. 6. 6© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Debugging Strategies Oh no!!! Another tool to learn Worth learning a new tool Segmentation faults & Core dumps Execution intercepted by gdb Allows examining the state, backtrace, etc Debugging is Narrowing Down Reaching close & then stepping
  7. 7. 7© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. 'gdb' Usage Compile with -g option gcc -g file.c -o file Run gdb (with desired options) gdb [options] ./file [core file] Pass command line arguments by setting args set args <cmd_line_args> Run the program by Typing c, or run <cmd_line_args> For debugging: break, watch, backtrace, … For help: help <command>
  8. 8. 8© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Examining Source Files list <line> Print 10 lines around <line> list [<filename>:]<function> Print 10 lines around beginning of <function> list <start>,<end> Print lines from <start> to <end> list Print 10 more lines
  9. 9. 9© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Other ways of Running step [ count ] – step into sub-routines next – run over sub-routines in a go finish – run till current function returns return – make selected stack frame return to its caller jump <address> – continue program at specified line or address
  10. 10. 10© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Breakpoints info break – Show list & status of breakpoints Setting breakpoints (returns its number) [t]break <function> [ if <expr> ] [t]break [<file>:]<line> Breakpoint Operations disable <break_no> enable <break_no> delete <break_no> commands <break_no> Execute gdb commands on reaching <break_no>
  11. 11. 11© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Examining the Stack Stack grows down Each call state is referred as a frame backtrace – Show stack frames frame <frame_no> – Select <frame_no> down – Select callee's frame up – Select caller's frame info args – Show args of current frame info locals – Show locals of current frame
  12. 12. 12© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Examining Data print[/xduotcf] <expr> Evaluate the valid C <expr> within current frame set variable <var> = <expr> Assign <expr> to <var> in the current scope Variables starting with $ are local to gdb display <expr> Print <expr> whenever program stops undisplay Cancels all previous display requests
  13. 13. 13© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Other Examinations Watchpoints / Catchpoints info watchpoints (Same as info break) watch <expr> - Break on Write watchpoint rwatch <expr> - Break on Read watchpoint awatch <expr> - Break on Both watchpoint Default is hardware watchpoint Registers: info registers Set-able options: info set
  14. 14. 14© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Shortcuts Just enough of command To make it unique Added with tab completion First letter only for break, delete, run, continue, step, next, print Repeat last by <Enter> Executing the same set of initial commands Put them in .gdbinit -x <gdb command file>
  15. 15. 15© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Miscellaneous Set editmode for gdb command line editmode [ emacs | vi | dumb ] Execute a shell command shell <cmd> Print command history history Set logging set logging <on | off> set logging file <log_file> (Default: gdb.txt)
  16. 16. 16© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Thread Debugging Automatic notification of new threads Switching among threads thread <thread_no> Auto switching on stop by breakpoint or signal Inquiry on existing threads info threads Applying command to a list of threads thread apply <thread_no> | all <cmd> Thread specific breakpoints Example: break <line> thread <thread_no>
  17. 17. 17© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. gdb: Multi-Process Debugging gdb version >= 7.1 Multiple processes from same session Before that Run different programs with different gdb If parent-child program Run the parent using gdb Attach another gdb with running child pid
  18. 18. 18© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Let's Debug Debug debugging_cprog.c find_the_bug.c Thread Debugging multi_threads.c
  19. 19. 19© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. User Process Memory Debugging ElectricFence → DUMA MEMWATCH All these tools replaces the usual memory allocation functions like malloc, free, … by the ones to keep track of the same
  20. 20. 20© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Profiling
  21. 21. 21© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. W's of Profiling Analyzing & Understanding Programs Many varieties Coding Style Checker Logic Analysis Memory Analysis Execution Time Profiling Run Time Error Capture Execution Flow Analysis
  22. 22. 22© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Profiling Categories Program Check Static (splint) Dynamic (memwatch, ElectricFence → DUMA) Code Coverage (Dynamic) Execution Flow using test vectors (gcov) Performance Analysis (Dynamic) Execution Time using test vectors (gprof) All in One: valgrind
  23. 23. 23© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Static Program Checkers Compiler itself Really fast But too naive Other Extreme: Formal Verification Tools Extensive But needs huge resources Preference: In between solutions Example: splint
  24. 24. 24© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. 'splint' detects Memory related Problems Dereferencing a possibly null pointer, Using possibly undefined storage Returning storage that is not properly defined Dangling references, Memory leaks, Buffer overflow, ... Dangerous Coding Likely infinite loops, fall-through cases or incomplete switches Suspicious statements, Dangerous aliasing Dangerous macro implementations or invocations Type mismatches with greater precision and flexibility, ... Specific Violations of Customized naming conventions Information hiding Modifications & Usage of global variable as per specified interfaces ...
  25. 25. 25© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. 'splint' Usage Run splint (with desired options) splint [options] file[.c] Prints out all the messages about the file On standard output Errors on standard error (using -usestderr) Some interesting options -weak for lesser messages -I <incl_dirs> Try 'splint splint_cprog'
  26. 26. 26© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Dynamic Program Checkers Memory Debugging mtrace (export MALLOC_TRACE=outfile.txt) memwatch ElectricFence → DUMA ... Replaces the memory allocation functions Like malloc, free, ... By the ones to keep track of the same
  27. 27. 27© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Code Coverage Dynamic Execution Flow Analysis Done by actually running the Program Usually done with sets of test vectors Providing the Test Code Coverage Coverage of: Line of Code, Branches, Blocks, ... Typically provides Entity executed or not executed % or times of execution of various entities Tool: gcov Could provide performance info when used with gprof
  28. 28. 28© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. 'gcov' Usage Compile with -fprofile-arcs -ftest-coverage options gcc -fprofile-arcs -ftest-coverage file.c -o file Execute the program with the test vectors ./file [ <cmd_line_args> ] Generates .gcda (Data) & .gcno (Graph) files Run gcov (with desired options) gcov [options] file.c Interesting options: --all-blocks --branch-probabilities Generates coverage output in .gcov file Try with gcov_cprog.c
  29. 29. 29© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Performance Analysis Dynamic Execution Time Analysis Done by actually running the Program Usually done with sets of test vectors Providing the Test Performance Analysis Typically provides info on Functions Time Spent, Times Called Call Graph Profile Data Performance Bottlenecks Tool: gprof
  30. 30. 30© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. 'gprof' Usage Compile with -pg option gcc -pg file.c -o file Run the program ./file [ <cmd_line_args> ] Generates gmon.out file Run gprof (with desired options) gprof [options] ./file [gmon.out] Dumps profiling info on stdout Try with gprof_cprog.c
  31. 31. 31© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Interesting 'gprof' Options -b # Brief output -p # Flat Profile -q # Call Graph Analysis -A # Print with Annotated source code -x # Annotate all lines -l # Line-by-line profiling -s # Sum -z # Display unused functions -r, -R <mapfile> # Reordering suggestions
  32. 32. 32© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Tool Suite: valgrind Provides a number of debugging & profiling tools Most popular being Memcheck Best behaviour without optimization Other possibly useful tools Cachegrind: Profiler for cache (miss) and branch (misprediction) events Callgrind: Profiler to show cost relationships across function calls, optionally with cache simulation Massif: Space profiler to explore in detail which parts of your program allocate memory Helgrind: Debugging tool for threaded programs Looks for various kinds of synchronisation errors in code That uses the POSIX pthreads API GUI frontend: valkyrie
  33. 33. 33© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. valgrind: Memcheck detects Touching “shouldn’t” memories Overrunning heap block boundaries Reading/Writing freed/unallocated memory Memory leaks Not freeing heap blocks Incorrect freeing of memory Double-freeing heap blocks Using values before initialization
  34. 34. 34© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. 'valgrind' Usage Compile with -g option gcc -g file.c -o file Run using valgrind & desired options valgrind [options] ./file [ <cmd_line_args> ] By default, runs Memcheck Profiles out the memory usage of the program For using other tools of valgrind, add --tool=<toolname> Try with valgrind_cprog.c
  35. 35. 35© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What all have we learnt? Debugging Various Techniques Using Debugger: gdb Profiling using Program Checkers splint, mtrace, memwatch, ... Code Coverage Tools gcov Performance Analyzers gprof, valgrind, ...
  36. 36. 36© 2010-15 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Any Queries?

×