查看汇编和C代码
回答
可以在文本用户界面运行的gdb(TUI)模式:
gdb -tui <your-binary>
(gdb) b main
(gdb) r
(gdb) layout split
的layout split
命令将所述窗口成两个部分 - 它们中的一个显示所述源代码,另外一个的相应的组装。 一些其他技巧:
- 集拆卸味英特尔 - 如果你喜欢英特尔符号
- 集打印ASM-还原函数 - 在装配图demangles C++的名字
- 妮 - 未来指令
- si - 步指令
如果您不想使用TUI模式(例如,终端不喜欢它),你总是可以做:
x /12i $pc
这意味着打印12个从当前程序计数器地址指令 - 这也适用于上述的技巧(demangling,步进指令等)。
“x/12i $ pc”技巧适用于gdb和cgdb,而“布局拆分”只适用于gdb。
享受:)
尝试disassemble /m
。
参见http://sourceware.org/gdb/current/onlinedocs/gdb/Machine-Code.html#Machine-Code
格式类似于的objdump -S
,并混和源与拆卸。示例输出摘录:
10 int i = 0;
=> 0x0000000000400536 <+9>: movl $0x0,-0x14(%rbp)
11 while (1) {
12 i++;
0x000000000040053d <+16>: addl $0x1,-0x14(%rbp)
我并不想要其他解决方案,因为我不想重新启动gdb并让它再次以相同方式设置,并且.o文件对重定位部分的引用使其很难理解。所以我认为这只是票。想象一下,我的恐惧,那么,当我最终意识到拆机/平方米默默省略了一些指令,像第一,三个字节指令后: '0x000000000442f038 <+24>:\t MOV%RSI,%RBX 0x000000000442f043 <+35>:\t子$ 0x38, %rsp' 这就是'GNU gdb(GDB)7.4.1-debian'。 – 2017-10-23 18:40:02
你的目的,尽量
objdump -S <your_object_file>
从人objdump的:
-S
--source
Display source code intermixed with disassembly, if possible.
Implies -d.
- 1. C++汇编代码
- 2. 汇编&C - 翻译C'S代码汇编
- 3. GCC C++和内联汇编代码?
- 4. 写汇编代码的C++
- 5. 从c反汇编代码#
- 6. C代码MIPS汇编
- 7. C++代码中的汇编代码
- 8. 从C#代码生成汇编代码?
- 9. 汇编代码到C代码
- 10. 汇编代码
- 11. 查看编译器扩展代码 - C++
- 12. 编译C代码到MIPS汇编
- 13. 反汇编C代替操作代码
- 14. 如何查看优化的jitted .NET代码的反汇编?
- 15. 查看emacs中函数的汇编代码
- 16. 解码和理解汇编代码
- 17. GMP-汇编代码?编译代码
- 18. 使用as88汇编器从汇编代码调用C函数
- 19. 汇编代码的C实现
- 20. 将C代码转换为MIPS汇编
- 21. C程序的汇编代码
- 22. 炼金术C代码汇编
- 23. 汇编代码到C实践
- 24. 逆向工程汇编代码到C
- 25. 如何查看由C/C++程序的gcc(任何flavor)编译器生成的汇编代码?
- 26. Ada泛型和汇编代码生成
- 27. CachedAnonymousMethodDelegate1从代码反汇编代码
- 28. 转换C代码,以MIPS(汇编源代码)
- 29. 将C代码翻译为汇编代码?
- 30. 汇编代码到C代码(添加指令问题)
有什么办法也摆脱顶部拆分窗口的?这是无意义的,需要空间。 – 2014-02-01 17:05:46
@BabkenVardanyan尝试'下一个布局'。如果它没有给你所需的布局,请尝试多次这个命令。这个命令不断在布局之间切换,所以你可以保留你想要的。 – 2015-05-16 14:45:52