関数を逆アセンブルすると、gdbはメモリアドレスを基数16で表示しますが、オフセットは基数10で表示します。
例:
(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>アドレスの隣にあり、ご覧のとおり、10進数になっています。
Linuxカーネルがクラッシュすると、ベース16を使用してバックトレースが表示されます。
[ 0.524380] [<c10381d5>] unregister_sysctl_table+0x65/0x70
目的の命令を見つけるために、バックトレースアドレスを基数16から基数10に変換する必要があるのは非常に面倒です。
gdbにベース16オフセットで逆アセンブル出力を表示するように指示できますか?