stripped文件描述以及gdb反汇编工具使用

往期地址:

本期主题:

  1. stripped文件
  2. gdb反汇编使用


1.什么是stripped文件

我们在编译完成一个文件时,当使用file命令查看文件类型时,有时候发现它是 stripped文件,有时候又是not stripped,例如
not stripped文件示例:
在这里插入图片描述
stripped文件示例:
在这里插入图片描述
这两者的差异是什么呢?

“Stripped” 和 “not stripped” 是与可执行文件(executable files)和共享库(shared libraries)相关的概念,特别是在类Unix系统中,如Linux。

Stripped 文件:
一个被 “stripped” 的文件是在编译过程中去除了调试信息的文件。调试信息包括变量名称、函数名称、行号等,这些信息通常用于调试和分析程序的运行。
Stripping 文件有助于减小文件的大小,因为调试信息占据了相当多的空间。
Stripped 文件通常用于生产环境,以减少潜在的安全风险,并提高执行效率。

Not Stripped 文件:
“Not stripped” 文件保留了编译时包含的所有调试信息。
这样的文件在调试和分析阶段非常有用,因为它允许开发人员在运行时检查变量值、调用堆栈等信息,以便更轻松地调试代码。
不过,由于保留了调试信息,这样的文件可能较大,不适合在生产环境中使用。
总的来说,“stripped” 和 “not stripped” 文件的差异在于是否包含调试信息,以及在何种情况下使用。在生产环境中,为了安全性和性能,通常会使用 “stripped” 文件,而在开发和调试阶段,通常会使用 “not stripped” 文件以便进行更方便的调试。

总结就是:
stripped文件少了很多调试信息,我们没法利用这个文件来进行反汇编等其他操作,而not stripped文件则可以。
例如我们使用gdb命令尝试stripped文件,会提示没有debug symbols:
在这里插入图片描述
如果是not stripped文件:
在这里插入图片描述

2.gdb反汇编如何使用

GDB(GNU Debugger)是一个用于调试程序的开源工具,它是 GNU 项目的一部分。GDB 支持多种编程语言,包括C、C++、Fortran等,并能在许多不同的操作系统上运行,如Linux、Unix、Windows等。
也可用来进行反汇编,反汇编时可以直接选择函数进行反汇编,非常方便。

使用方法:

  1. 直接gdb想要反汇编的文件
  2. 输入 disassemble /m func名字,就能实现对某个函数的反汇编

例如代码如下:

#include <stdio.h>

int test_func(int a, int b)
{
    return a + b;
}

int main(void)
{
    int a = 1;
    int b = 2;
    int c = 0;

    c = test_func(a, b);

    return 0;
}

这里对test_func函数进行反汇编,反汇编结果:
在这里插入图片描述

  • 30
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值