Summary of GDB commands for x86-64 Systems

Command Effect

Starting:
  gdb
  gdb <file>

Running and stopping

  quit                      Exit gdb
  run                       Run program
  run 1 2 3                 Run program with command-line arguments 1 2 3
  kill                Stop the program
  quit                Exit gdb
  Ctrl-d            Exit gdb
      Note: Ctrl-C does not exit from gdb, but halts the current
      gdb command


Breakpoints

  break sum                 Set breakpoint at the entry to function sum
  break *0x80483c3          Set breakpoint at address 0x80483c3
  delete 1                  Delete breakpoint 1
  disable 1            Disable the breakpoint 1
                   (gdb numbers each breakpoint you create)
  enable 1            Enable breakpoint 1
  delete                    Delete all breakpoints
  clear sum            Clear any breakpoints at the entry to function sum

Execution

  stepi                     Execute one instruction
  stepi 4                   Execute four instructions
  nexti                     Like stepi, but proceed
                through function calls without stopping
  step                      Execute one C statement
  continue                  Resume execution until the next breakpoint
  until 3                   Continue executing until program hits breakpoint 3
  finish                    Resume execution until current function returns
  call sum(1, 2)            Call sum(1,2) and print return value

Examining code

  disas                     Disassemble current function
  disas sum                 Disassemble function sum
  disas 0x80483b7           Disassemble function around 0x80483b7
  disas 0x80483b7 0x80483c7 Disassemble code within specified address range

  print /x $rip             Print program counter in hex
  print /d $rip             Print program counter in decimal
  print /t $rip             Print program counter in binary

Examining data

  print /d $rax             Print contents of %rax in decimal
  print /x $rax             Print contents of %rax in hex
  print /t $rax             Print contents of %rax in binary
  print /d (int)$rax        Print contents of %rax in decimal after
                sign-extending lower 32-bits.

                            You need this to print 32-bit, negative
                            numbers stored in the lower 32 bits of
                            %rax. For example, if the lower 32-bits of
                            %rax store 0xffffffff, you will see 

                (gdb) print $rax
                $1 = 4294967295
                (gdb) print (int)$rax
                $2 = -1
                (gdb)


  print 0x100               Print decimal representation of 0x100
  print /x 555              Print hex representation of 555
  print /x ($rsp+8)         Print (contents of %rsp) + 8 in hex
  print *(int *) 0xbffff890 Print integer at address 0xbffff890
  print *(int *) ($rsp+8)   Print integer at address %rsp + 8
  print (char *) 0xbfff890  Examine a string stored at 0xbffff890

  x/w   0xbffff890          Examine (4-byte) word starting at address
                0xbffff890
  x/w   $rsp                Examine (4-byte) word starting at address in $rsp
  x/wd  $rsp                Examine (4-byte) word starting at address in $rsp.
                Print in decimal
  x/2w  $rsp                Examine two (4-byte) words starting at address
                in $rsp
  x/2wd $rsp                Examine two (4-byte) words starting at address
                in $rsp. Print in decimal
  x/g   $rsp                Examine (8-byte) word starting at address in $rsp.
  x/gd  $rsp                Examine (8-byte) word starting at address in $rsp.
                Print in decimal
  x/a   $rsp                Examine address in $rsp. Print as offset from
                previous global symbol.
  x/s   0xbffff890          Examine a string stored at 0xbffff890
  x/20b sum                 Examine first 20 opcode bytes of function sum
  x/10i sum                 Examine first 10 instructions of function sum

  (Note: the format string for the `x' command has the general form 
     x/[NUM][SIZE][FORMAT] where

    NUM  = number of objects to display
    SIZE = size of each object (b=byte, h=half-word, w=word,
                            g=giant (quad-word))
    FORMAT = how to display each object (d=decimal, x=hex, o=octal, etc.)

    If you don't specify SIZE or FORMAT, either a default value, or the last
    value you specified in a previous `print' or `x' command is used.
  )

Useful information

  backtrace            Print the current address and stack backtrace
  where                Print the current address and stack backtrace

  info program            Print current status of the program)
  info functions        Print functions in program
  info stack            Print backtrace of the stack)
  info frame            Print information about the current stack frame
  info registers        Print registers and their contents
  info breakpoints        Print status of user-settable breakpoints

  display /FMT EXPR         Print expression EXPR using format FMT
                every time GDB stops
  undisplay                 Turn off display mode
  help                      Get information about gdb

results matching ""

    No results matching ""