【发布时间】:2014-08-19 19:54:27
【问题描述】:
如果我的英语不好,我很抱歉。这个问题困扰了我好几天。 我有一个简单的 C 源代码,其中包含我正在检查的子函数。首先,我使用 gcc 创建 .out 文件。我正在用 GDB 检查这个文件。但是如果我想反汇编被调用的函数,我总是会从 gdb 收到一条错误消息。 序言:
unix@unix-laptop:~/booksrc $ gcc -g stack_example.c
unix@unix-laptop:~/booksrc $ gdb -q ./a.out
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
(gdb) disass main
Dump of assembler code for function main:
0x08048357 <main+0>: push %ebp
0x08048358 <main+1>: mov %esp,%ebp
0x0804835a <main+3>: sub $0x18,%esp
0x0804835d <main+6>: and $0xfffffff0,%esp
0x08048360 <main+9>: mov $0x0,%eax
0x08048365 <main+14>: sub %eax,%esp
0x08048367 <main+16>: movl $0x4,0xc(%esp)
0x0804836f <main+24>: movl $0x3,0x8(%esp)
0x08048377 <main+32>: movl $0x2,0x4(%esp)
0x0804837f <main+40>: movl $0x1,(%esp)
0x08048386 <main+47>: call 0x8048344 <test_function>
0x0804838b <main+52>: leave
0x0804838c <main+53>: ret
End of assembler dump.
(gdb) disass test_function()
You can't do that without a process to debug.
(gdb)
您知道错误的原因吗?我已经使用谷歌,但我找不到任何解决问题的方法。我还搜索了说明以确保语法正确。 http://visualgdb.com/gdbreference/commands/disassemble
感谢阅读, 相交!
【问题讨论】:
-
你如何编译你的C代码;显示确切的命令(它应该以
gcc -Wall -g开头)。你如何运行gdb?您使用的是gcc和gdb的哪个版本? -
请编辑您的问题以在适当的位置显示键入的命令(而不是某些外部站点上的屏幕截图)。每个命令在单独的段落中至少有四个空格。
-
请把错误信息的文本放在这里!不欢迎将图像放到外部站点。
-
完成。我还读了cmets。将来我会一直发布错误消息..这更容易,因为我在虚拟机中工作......