gpt4 book ai didi

gdb反汇编: show function offsets in base 16

转载 作者:行者123 更新时间:2023-12-02 03:29:45 25 4
gpt4 key购买 nike

反汇编函数时,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进制偏移量的反汇编输出吗?

最佳答案

GDB 目前使用硬编码“%d”作为偏移量。

It's very annoying to have to convert backtrace addresses ... to be able to find the desired instruction

你确实意识到你可以简单地做到

x/i 0xc10381d5       # the crashing instruction (if looking at the inner frame)
x/i 0xc10381d5-5 # the call (if looking at caller frame)
x/10i 0xc10381d5-20 # context around the desired location

关于gdb反汇编: show function offsets in base 16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com