gdb dump binary memory to file

参考:http://stackoverflow.com/questions/13568215/how-can-i-dump-the-output-of-the-x-command-in-gdb-to-a-file


目的:

在gdb调试过程中(甚至是在调试coredump时),将程序内存中的内容dump到指定文件中。


gdb命令:

(gdb) dump binary memory ./file START STOP

将 [START, STOP) 地址范围内的内存内容输出到文件 file 中


举例:

1)将 [$pc, $pc+450) 范围内的内存输出到./file 中

(gdb) p $pc
$1 = (void (*)()) 0x4004a7 <main+11>
(gdb) p $pc + 450
$2 = (void (*)()) 0x400669
(gdb) dump binary memory ./file $1 $2

2)将字符串s1的前5个字节输出到./a中

int main ()
{
        char s1[] = "abcdefghijklmnopqrstuvwxyz";
        char s2[] = "0123456789";

  return 0;
}

[root@ampcommons02 yasi]# gdb ./dump -q
Reading symbols from /home/yasi/s...done.
(gdb) b 6
Breakpoint 1 at 0x4005a4: file s.cpp, line 6.
(gdb) r
Starting program: /home/yasi/s

Breakpoint 1, main () at s.cpp:6
6         return 0;
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.80.el6_3.6.x86_64 libgcc-4.4.6-4.el6.x86_64 libstdc++-4.4.6-4.el6.x86_64
(gdb) dump binary memory ./dump s1 s1+5


[root@ampcommons02 yasi]# cat ./dump
abcde


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"bash: ./gdb: cannot execute binary file: Exec format error"错误通常是由于尝试在不兼容的操作系统或架构上执行二进制文件而引起的。这个错误可能有以下几个原因: 1. 文件不是可执行文件:请确保文件具有可执行权限,并且是一个可执行文件。可以使用`ls -l`命令来查看文件的权限和类型。 2. 文件是在不同的操作系统或架构上编译的:如果您的文件是在不同的操作系统或架构上编译的,可能会导致无法执行的错误。请确保您的文件与您的操作系统和架构兼容。 3. 缺少依赖项:如果您的文件依赖于其他库或程序,而这些依赖项在您的系统上不存在或不兼容,也可能导致无法执行的错误。请确保您的系统上安装了所有必需的依赖项。 解决这个问题的方法包括: 1. 检查文件的权限:确保文件具有可执行权限。可以使用`chmod +x`命令为文件添加可执行权限。 2. 检查文件的类型和架构:使用`file`命令检查文件的类型和架构。确保文件与您的操作系统和架构兼容。 3. 检查依赖项:如果文件依赖于其他库或程序,请确保这些依赖项在您的系统上存在并且与文件兼容。您可以使用`ldd`命令检查文件的依赖项。 4. 重新编译文件:如果文件是在不同的操作系统或架构上编译的,您可能需要重新编译文件以使其与您的系统兼容。 以下是一个示例,演示了如何解决"bash: ./gdb: cannot execute binary file: Exec format error"错误: ```shell # 检查文件的权限 chmod +x gdb # 检查文件的类型和架构 file gdb # 检查文件的依赖项 ldd gdb # 如果需要,重新编译文件 make gdb ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值