首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用GDB拆卸内存范围?

如何用GDB拆卸内存范围?
EN

Stack Overflow用户
提问于 2009-08-06 07:54:31
回答 10查看 132.7K关注 0票数 68

我试图拆解一个程序,以查看syscall程序集指令(我相信是INT指令)和GDB处理程序,并为它编写了一个小程序(见下文),用于打开和关闭一个文件。

我能够跟踪GDB的调用,直到它执行调用为止。

当我试图告诉GDB“拆解0x.”(呼叫地址)它的回应是:“没有包含指定地址的函数。”

是否有可能强迫GDB拆卸(或尽可能好地在汇编程序中显示)该内存地址?如果是这样的话,是怎么做的?

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE* f;
    f = fopen("main.c", "r");
    if (!f) { 
      perror("open");
      return -1;
    }
    fclose(f);
    return 0;
}
EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2009-08-07 16:17:31

你只想拆开你的主菜吗?如果是这样的话,请尝试如下:

代码语言:javascript
复制
(gdb) info line main 
(gdb) disas STARTADDRESS ENDADDRESS

就像这样:

代码语言:javascript
复制
USER@MACHINE /cygdrive/c/prog/dsa
$ gcc-3.exe -g main.c

USER@MACHINE /cygdrive/c/prog/dsa
$ gdb a.exe
GNU gdb 6.8.0.20080328-cvs (cygwin-special)
...
(gdb) info line main
Line 3 of "main.c" starts at address 0x401050 <main> and ends at 0x401075 <main+
(gdb) disas 0x401050 0x401075
Dump of assembler code from 0x401050 to 0x401075:
0x00401050 <main+0>:    push   %ebp
0x00401051 <main+1>:    mov    %esp,%ebp
0x00401053 <main+3>:    sub    $0x18,%esp
0x00401056 <main+6>:    and    $0xfffffff0,%esp
0x00401059 <main+9>:    mov    $0x0,%eax
0x0040105e <main+14>:   add    $0xf,%eax
0x00401061 <main+17>:   add    $0xf,%eax
0x00401064 <main+20>:   shr    $0x4,%eax
0x00401067 <main+23>:   shl    $0x4,%eax
0x0040106a <main+26>:   mov    %eax,-0xc(%ebp)
0x0040106d <main+29>:   mov    -0xc(%ebp),%eax
0x00401070 <main+32>:   call   0x4010c4 <_alloca>
End of assembler dump.

不过,我没看到你的系统中断电话。(我上次尝试在程序集中进行系统调用已经有一段时间了。不过,我记得最后一次

票数 54
EN

Stack Overflow用户

发布于 2009-10-09 19:12:53

是啊,拆解不是这里最好的命令。您想要的命令是"x/i“(检查为指令):

代码语言:javascript
复制
(gdb) x/i 0xdeadbeef
票数 117
EN

Stack Overflow用户

发布于 2009-08-07 16:25:48

这不是你问题的直接答案,但既然你似乎只是想拆解二进制文件,也许你可以直接使用objdump

代码语言:javascript
复制
objdump -d program

这应该会给你它的拆卸。您可以添加-S,如果您想要它的源代码注释。

票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1237489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档