【发布时间】:2015-09-09 18:59:21
【问题描述】:
我已将 gdb-debugger 的 disassembly-flavor 设置为 Intel(两者:su 和普通用户),但无论如何它仍然以 AT&T 表示法显示汇编代码:
patrick@localhost:~/Dokumente/Projekte$ gdb -q ./a.out
Reading symbols from ./a.out...done.
(gdb) break main
Breakpoint 1 at 0x40050e: file firstprog.c, line 5.
(gdb) run
Starting program: /home/patrick/Dokumente/Projekte/a.out
Breakpoint 1, main () at firstprog.c:5
5 for(i=0; i < 10; i++)
(gdb) show disassembly
The disassembly flavor is "intel".
(gdb) info registers
rax 0x400506 4195590
rbx 0x0 0
rcx 0x0 0
rdx 0x7fffffffe2d8 140737488347864
rsi 0x7fffffffe2c8 140737488347848
rdi 0x1 1
rbp 0x7fffffffe1e0 0x7fffffffe1e0
(gdb) info register eip
Invalid register `eip'
我确实重新启动了计算机。我的操作系统是 Kali Linux amd64。 我有以下问题:
- 为什么 gdb 仍然显示
AT&T符号? - 为什么寄存器
EIP(指令指针)显示为无效寄存器?
【问题讨论】:
-
因为 1) 反汇编风格在 GDB 调用 (you need to set it in a
gdbinitscript run by GDB when it starts) 中不 保存和 2)eip寄存器在 GDB 中的正确名称是 @987654330 @ 或$pc. -
@IwillnotexistIdonotexist 我知道,我通过这样做设置了风格。
patrick@localhost:~/Dokumente/Projekte$ cat ~/.gdbinitset disassembly-flavor intel对于根用户:patrick@localhost:~/Dokumente/Projekte$ suPasswort:root@localhost:/home/patrick/Dokumente/Projekte# cat ~/.gdbinitset disassembly intel