DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(gdb.info) Machine Code

Info Catalog (gdb.info) Source Path (gdb.info) Source
 
 Source and machine code
 =======================
 
    You can use the command `info line' to map source lines to program
 addresses (and vice versa), and the command `disassemble' to display a
 range of addresses as machine instructions.  When run under GNU Emacs
 mode, the `info line' command causes the arrow to point to the line
 specified.  Also, `info line' prints addresses in symbolic form as well
 as hex.
 
 `info line LINESPEC'
      Print the starting and ending addresses of the compiled code for
      source line LINESPEC.  You can specify source lines in any of the
      ways understood by the `list' command ( Printing source
      lines List.).
 
    For example, we can use `info line' to discover the location of the
 object code for the first line of function `m4_changequote':
 
      (gdb) info line m4_changequote
      Line 895 of "builtin.c" starts at pc 0x634c and ends at 0x6350.
 
 We can also inquire (using `*ADDR' as the form for LINESPEC) what
 source line covers a particular address:
      (gdb) info line *0x63ff
      Line 926 of "builtin.c" starts at pc 0x63e4 and ends at 0x6404.
 
    After `info line', the default address for the `x' command is
 changed to the starting address of the line, so that `x/i' is
 sufficient to begin examining the machine code ( Examining memory
 Memory.).  Also, this address is saved as the value of the convenience
 variable `$_' ( Convenience variables Convenience Vars.).
 
 `disassemble'
      This specialized command dumps a range of memory as machine
      instructions.  The default memory range is the function
      surrounding the program counter of the selected frame.  A single
      argument to this command is a program counter value; GDB dumps the
      function surrounding this value.  Two arguments specify a range of
      addresses (first inclusive, second exclusive) to dump.
 
    The following example shows the disassembly of a range of addresses
 of HP PA-RISC 2.0 code:
 
      (gdb) disas 0x32c4 0x32e4
      Dump of assembler code from 0x32c4 to 0x32e4:
      0x32c4 <main+204>:      addil 0,dp
      0x32c8 <main+208>:      ldw 0x22c(sr0,r1),r26
      0x32cc <main+212>:      ldil 0x3000,r31
      0x32d0 <main+216>:      ble 0x3f8(sr4,r31)
      0x32d4 <main+220>:      ldo 0(r31),rp
      0x32d8 <main+224>:      addil -0x800,dp
      0x32dc <main+228>:      ldo 0x588(r1),r26
      0x32e0 <main+232>:      ldil 0x3000,r31
      End of assembler dump.
 
    Some architectures have more than one commonly-used set of
 instruction mnemonics or other syntax.
 
 `set disassembly-flavor INSTRUCTION-SET'
      Select the instruction set to use when disassembling the program
      via the `disassemble' or `x/i' commands.
 
      Currently this command is only defined for the Intel x86 family.
      You can set INSTRUCTION-SET to either `intel' or `att'.  The
      default is `att', the AT&T flavor used by default by Unix
      assemblers for x86-based targets.
 
Info Catalog (gdb.info) Source Path (gdb.info) Source
automatically generated byinfo2html