Copyright (C) 2000-2012 |
GNU Info (gdb.info)Machine CodeSource 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 (Note: Printing source lines.). 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 (*note Examining memory: Memory.). Also, this address is saved as the value of the convenience variable `$_' (Note: Convenience variables.). `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. automatically generated by info2www version 1.2.2.9 |