GCC Debugging/gdb
Appearance
Preping for the debugger
[edit | edit source]- program must first be compiled for debugging:
- gcc -g <filname.c> -o <output filename>
- eg: gcc -g debug_me.c -o debug_me
- the "-g" flag is important (To create symbol table)
Starting the debugger
[edit | edit source]- start the debugger with:
- gdb <program name>
- eg: gdb debug_me
common commands
[edit | edit source]- run, print, where, break, cond, step, next, set, ignore
run
[edit | edit source]- runs the program
- to pass arguments to the program on run:
- run <arg1> <arg2>
- eg: run 12 35
- eg: run "hello world" "goodbye world"
break
[edit | edit source]- sets a "breakpoint" at a certain area \ function
- break <function name>
- eg: break main
- or
- eg: b main
- break <filename>:<line of code to stop in>
- eg: break debug_me.c:5
b
[edit | edit source]- shorthand for break
next
[edit | edit source]- execute next line of code
- eg: next
step
[edit | edit source]- next line of code, stepping into functions
- eg: step
continue
[edit | edit source]- go to next breakpoint or end of program
cont
[edit | edit source]- shorthand for continue
- print out a variables \ expressions contents
- print <variable name>
- eg: print x
disp
[edit | edit source]- prints out a variable \ expression value every step
- eg: disp x
undisplay
[edit | edit source]- cancel a display command
- eg: undisplay 3
- would stop the var at pos 3 from displaying every time
where
[edit | edit source]- move within the call stack
- ...
up and down
[edit | edit source]- up: previous step inside call stack
- down: next step inside call stack
list
[edit | edit source]- shows code at a certain location
- list <no args>
- code at current location and then at next location if typed again
- eg: list
- list -
- shows code at previous location and then at the location before that if typed again
- list <function name>
- shows code in function definition
- eg: list func1
cond
[edit | edit source]- conditional
- cond <breakpoint> <condition>
- eg: cond 1 val>0
- stop at breakpoint "1" when "val" becomes greater than 0
set
[edit | edit source]- change a value, eg
- set variable x = 12
- will change x's value to 12
ignore
[edit | edit source]ignore a breakpoint for a user specified number of times.
usage: ignore <id> <count>
ignore 2 20 --> Breakpoint 2 will not be hit for 20 times.
quit
[edit | edit source]- exits the gdb
q
[edit | edit source]- shorthand for quit