Starting GDB:
Attach to a process already running:
The Cheat Sheet is based on end-of-day prices and intended for the current trading session if the market is open, or the next trading session if the market is closed. The projected trigger prices of the signals are listed from highest price at the top of the page to lowest price at the bottom. The Context Map Cheat Sheet is freely available for you to use. In addition, your feedback and ideas are welcome to improve the technique or to create alternative versions. If you have questions you can ping us or open an Issue. Feel free to also send. Jan 15, 2004 Debugging with DDD. DDD is a graphical front-end for GDB and other command-line debuggers. This is the First Edition of Debugging with DDD, 15 January, 2004, for DDD Version 3.3.9. Years: domain-driven design. Eric Evans has made a great contribution to this subject matter by writing down in one book much of the accumulated knowledge about domain-driven design. For a more detailed presentation of this topic, we recommend reading his book “Domain-Driven Design: Tackling.
Command line options: (version 6. Older versions use a single '-')
Option | Description |
---|---|
--help -h | List command line arguments |
--exec=file-name -e file-name | Identify executable associated with core file. |
--core=name-of-core-file -c name-of-core-file | Specify core file. |
--command=command-file -x command-file | File listing GDB commands to perform. Good for automating set-up. |
--directory=directory -d directory | Add directory to the path to search for source files. |
--cd=directory | Run GDB using specified directory as the current working directory. |
--nx -n | Do not execute commands from ~/.gdbinit initialization file. Default is to look at this file and execute the list of commands. |
--batch -x command-file | Run in batch (not interactive) mode. Execute commands from file. Requires -x option. |
--symbols=file-name -s file-name | Read symbol table from file file. |
--se=file-name | Use FILE as symbol file and executable file. |
--write | Enable writing into executable and core files. |
--quiet -q | Do not print the introductory and copyright messages. |
--tty=device | Specify device for running program's standard input and output. |
--tui | Use a terminal user interface. Console curses based GUI interface for GDB. Generates a source and debug console area. |
--pid=process-id -p process-id | Specify process ID number to attach to. |
--version | Print version information and then exit. |
Commands used within GDB: I am gonna be ready by yolanda adams.
Command | Description |
---|---|
help | List gdb command topics. |
help topic-classes | List gdb command within class. |
help command | Command description. eg help show to list the show commands |
apropos search-word | Search for commands and command topics containing search-word. |
info args i args | List program command line arguments |
info breakpoints | List breakpoints |
info break | List breakpoint numbers. |
info break breakpoint-number | List info about specific breakpoint. |
info watchpoints | List breakpoints |
info registers | List registers in use |
info threads | List threads in use |
info set | List set-able option |
Break and Watch | |
break funtion-name break line-number break ClassName::functionName | Suspend program at specified function of line number. |
break +offset break -offset | Set a breakpoint specified number of lines forward or back from the position at which execution stopped. |
break filename:function | Don't specify path, just the file name and function name. |
break filename:line-number | Don't specify path, just the file name and line number. break Directory/Path/filename.cpp:62 |
break *address | Suspend processing at an instruction address. Used when you do not have source. |
break line-number if condition | Where condition is an expression. i.e. x > 5 Suspend when boolean expression is true. |
break line thread thread-number | Break in thread at specified line number. Use info threads to display thread numbers. |
tbreak | Temporary break. Break once only. Break is then removed. See 'break' above for options. |
watch condition | Suspend processing when condition is met. i.e. x > 5 |
clear clear function clear line-number | Delete breakpoints as identified by command option. Delete all breakpoints in function Delete breakpoints at a given line |
delete d | Delete all breakpoints, watchpoints, or catchpoints. |
delete breakpoint-number delete range | Delete the breakpoints, watchpoints, or catchpoints of the breakpoint ranges specified as arguments. |
disable breakpoint-number-or-range enable breakpoint-number-or-range | Does not delete breakpoints. Just enables/disables them. Example: Show breakpoints: info break Disable: disable 2-9 |
enable breakpoint-number once | Enables once |
continue c | Continue executing until next break point/watchpoint. |
continue number | Continue but ignore current breakpoint number times. Usefull for breakpoints within a loop. |
finish | Continue to end of function. |
Line Execution | |
step s step number-of-steps-to-perform | Step to next line of code. Will step into a function. |
next n next number | Execute next line of code. Will not enter functions. |
until until line-number | Continue processing until you reach aspecified line number. Also: function name, address, filename:function or filename:line-number. |
info signals info handle handle SIGNAL-NAMEoption | Perform the following option when signal recieved: nostop, stop, print, noprint, pass/noignore or nopass/ignore |
where | Shows current line number and which function you are in. |
Stack | |
backtrace bt bt inner-function-nesting-depth bt -outer-function-nesting-depth | Show trace of where you are currently. Which functions you are in. Prints stack backtrace. |
backtrace full | Print values of local variables. |
frame frame number f number | Show current stack frame (function where you are stopped) Select frame number. (can also user up/down to navigate frames) |
up down up number down number | Move up a single frame (element in the call stack) Move down a single frame Move up/down the specified number of frames in the stack. |
info frame | List address, language, address of arguments/local variables and which registers were saved in frame. |
info args info locals info catch | Info arguments of selected frame, local variables and exception handlers. |
Source Code | |
list l list line-number list function list - list start#,end# list filename:function | List source code. |
set listsize count show listsize | Number of lines listed when list command given. |
directory directory-name dir directory-name show directories | Add specified directory to front of source code path. |
directory | Clear sourcepath when nothing specified. |
Machine Language | |
info line info line number | Displays the start and end position in object code for the current line in source. Display position in object code for a specified line in source. |
disassemble 0xstart 0xend | Displays machine code for positions in object code specified (can use start and end hex memory values given by the info line command. |
stepi si nexti ni | step/next assembly/processor instruction. |
x 0xaddress x/nfu 0xaddress | Examine the contents of memory. Examine the contents of memory and specify formatting.
|
Examine Variables | |
print variable-name p variable-name p file-name::variable-name p 'file-name'::variable-name | Print value stored in variable. |
p *array-variable@length | Print first # values of array specified by length. Good for pointers to dynamicaly allocated memory. |
p/x variable | Print as integer variable in hex. |
p/d variable | Print variable as a signed integer. |
p/u variable | Print variable as a un-signed integer. |
p/o variable | Print variable as a octal. |
p/t variable x/b address x/b &variable | Print as integer value in binary. (1 byte/8bits) |
p/c variable | Print integer as character. |
p/f variable | Print variable as floating point number. |
p/a variable | Print as a hex address. |
x/w address x/4b &variable | Print binary representation of 4 bytes (1 32 bit word) of memory pointed to by address. |
ptype variable ptype data-type | Prints type definition of the variable or declared variable type. Helpful for viewing class or struct definitions while debugging. |
GDB Modes | |
set gdb-optionvalue | Set a GDB option |
set logging on set logging off show logging set logging file log-file | Turn on/off logging. Default name of file is gdb.txt |
set print array on set print array off show print array | Default is off. Convient readable format for arrays turned on/off. |
set print array-indexes on set print array-indexes off show print array-indexes | Default off. Print index of array elements. |
set print pretty on set print pretty off show print pretty | Format printing of C structures. |
set print union on set print union off show print union | Default is on. Print C unions. |
set print demangle on set print demangle off show print demangle | Default on. Controls printing of C++ names. |
Start and Stop | |
run r run command-line-arguments run < infile > outfile | Start program execution from the beginning of the program. The command break main will get you started. Also allows basic I/O redirection. |
continue c | Continue execution to next break point. |
kill | Stop program execution. |
quit q | Exit GDB debugger. |
Displaying STL container classes using the GDB 'p variable-name'results in an cryptic display of template definitions and pointers.Use the following ~/.gdbinit file (V1.03 09/15/08). Now works with GDB 4.3+.
(Archived versions: [V1.01 GDB 6.4+ only])
Thanks to Dr. Eng. Dan C. Marinescu for permission to post this script.
Use the following commands provided by the script:
Data type | GDB command |
---|---|
std::vector<T> | pvector stl_variable |
std::list<T> | plist stl_variable T |
std::map<T,T> | pmap stl_variable |
std::multimap<T,T> | pmap stl_variable |
std::set<T> | pset stl_variable T |
std::multiset<T> | pset stl_variable |
std::deque<T> | pdequeue stl_variable |
std::stack<T> | pstack stl_variable |
std::queue<T> | pqueue stl_variable |
std::priority_queue<T> | ppqueue stl_variable |
std::bitset<n>td> | pbitset stl_variable |
std::string | pstring stl_variable |
std::widestring | pwstring stl_variable |
Also see the YoLinux.com STL string class tutorial and debugging with GDB.
Example: STL_vector_int.cpp
Compile: g++ -g STL_vector_int.cppDebug in GDB: gdb a.out
Notice the native GDB print 'p' results in an cryptic display while the 'pvector'routine from the GDB script provided a human decipherable display of your data.Example: STL_vector_int_2.cpp
Compile: g++ -g STL_vector_int_2.cppHonestech tvr 2.0 serial. Debug in GDB: gdb a.out
Note 'pvector' does not de-reference the entire vector of vectors all at once but returns vectors $1, $2 and $3. The 'pvector' command then helps us traverse the information by examining the contents of each element in the individual 'terminal' vectors.Note that the native gdb 'p vI2Matrix' (last command) was much less informative.GDB has a console GUI option available with the command line option --tui
Text console User Interface: gdb --tuiMy favorite gdb GUI is ddd.
Awesome variable and memory interrogation. Can interactively follow a linked list by clicking on its pointer in the display graph window. Highlight variable and right click for menu to interrogate variables in source.
Source code line numbers: Source + Display Line Numbers.
Set break points by right clicking just left of the line number.
GNU ddd: GUI for gdb, dbx, bashdb, pydb, etc
'Debugging with GDB: The GNU Source-Level Debugger' by Richard Stallman, Roland H. Pesch, Stan Shebs ISBN # 1882114884, Free Software Foundation; 9th edition (January 1, 2002) | |
'GDB Pocket Reference' by Arnold Robbins ISBN # 0596100272, O'Reilly | |
'Advanced Linux Programming' by Mark Mitchell, Jeffrey Oldham, Alex Samuel, Jeffery Oldham ISBN # 0735710430, New Riders Good book for programmers who already know how to program and just need to know the Linux specifics. Ring king arcade game. Covers a variety of Linux tools, libraries, API's and techniques. If you don't know how to program, start with a book on C. |