我正在调试 gdb 中的二进制文件。它是由 gcc 在 Intel IA-32 上编译的 C 代码。我从objdump
. 我最感兴趣的是这里的最后一行:
08048d9e <func_1>
8048d9e: 55 push %ebp
8048d9f: 89 e5 mov %esp,%ebp
8048da1: 83 ec 18 sub $0x18,%esp
8048da4: c7 44 24 04 88 99 04 movl $0x8049988,0x4(%esp)
8048dab: 08
8048dac: 8b 45 08 mov 0x8(%ebp),%eax
8048daf: 89 04 24 mov %eax,(%esp)
8048db2: e8 54 01 00 00 call 8048f0b <strings_not_equal>
我相信最后一行将比较在指定地址找到的值:8048f0b
。我尝试:
(gdb) x 0x8048f0b
并收到:
0x8048f0b <strings_not_equal>: 0x57e58955
我是否错误地解释了程序集?这是在 gdb 中读取地址值的正确方法吗?我有点期待找到一个对 ascii 更友好的十六进制值。我有兴趣找到与之比较的存储字符串值。
您是否还有喜欢用于此类调试的最喜欢的 gui 工具?我一直在考虑尝试ddd。我想找到一种更简单的调试方法。