zoukankan      html  css  js  c++  java
  • linux 常用命令

    linux在当前目录下新建文件需要的命令是mkdir 文件名

    然后进入新建的文件的命令是cd 文件名 返回上一层是cd ..

    新建一个c语言程序的过程是先打开vim 编译器 ,然后写完后进行输入esc 输入:w进行保存 再输入:q进行退出然后进行编译链接,主要的命令是gcc -c 文件名.c。编译结束,然后gcc -o 文件名 文件名.o 链接结束。执行程序的主要命令是./文件名  即可

    接下来要说的是进行查看汇编代码

    前期准备

    cd 文件名

    使用不带编译优化的

    下面所指的文件名是建好的c语言文件

    gcc -O0 文件名.c -m32 -g -o 文件名

    反汇编

    objdump -S(一定注意大写) 文件名>文件名.txt

    用 vi编辑器打开即可看到反汇编的内容

    第一步启用gdb

    具体操作 (gdb)文件名

    第二步 设置断点

    具体操作 (gdb)break main(这是在main函数的地方设置的断点)

    另一种方法:(gdb)break 文件名.c:行数(在某一行设置断点)

    第三步 运行程序

    具体操作(gdb) run

    第四步 执行一条指令

    具体操作 (gdb)si(执行一条指令)s(执行一条语句)

    第五步 查看定点寄存器的内容

    具体操作(gdb)i r

    第六步 查看指定的寄存器的内容

    具体操作(gdb)i r esp ebp  //esp栈顶寄存器 ebp 栈底寄存器

    第七步 按字节显示当前栈帧内容,观察栈中数据

    具体操作(gdb)x/yxb $esp  //y=(ebp)-(esp)+4

    第八步按4字节显示当前栈帧内容,观察栈中数据

    具体操作(gdb)x/zxw $esp  //z=((ebp)-(esp)+4)/4

    第九步

    退出:(gdb)quit

  • 相关阅读:
    现在分词做状语,到,非谓语动词
    成功和失败因素收集
    退拽原理2
    分享到(事件冒泡实例)
    滚动公告(纵向)
    RabbitMQ消息队列(一): Detailed Introduction 详细介绍
    在IDEA中实战Git
    深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
    MySQL中日期和时间戳互相转换的函数和方法
    【Docker】 windows10 docker 使用
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10821053.html
Copyright © 2011-2022 走看看