在反汇编函数时,gdb会以十六进制显示内存地址,但以十进制显示偏移量。
例如:
(gdb) disassemble unregister_sysctl_table
Dump of assembler code for function unregister_sysctl_table:
0x00037080 <+0>: push %ebp
0x00037081 <+1>: mov %esp,%ebp
0x00037083 <+3>: sub $0x14,%esp
0x00037086 <+6>: mov %ebx,-0xc(%ebp)
0x00037089 <+9>: mov %esi,-0x8(%ebp)
0x0003708c <+12>:mov %eax,%ebx
0x0003708e <+14>:mov %edi,-0x4(%ebp)
函数的偏移量是地址旁边的<+N>
,并且它们以十进制表示。
当Linux内核崩溃时,会使用十六进制显示回溯信息:
[ 0.524380] [<c10381d5>] unregister_sysctl_table+0x65/0x70
将回溯地址从16进制转换为10进制以查找所需指令非常麻烦。
是否可以告诉 gdb 使用16进制偏移量显示反汇编输出?