应用眼中的操作系统:系统调用


前言

本篇文章是2020南京大学"操作系统: 设计与实现"的课程笔记。这里说一句蒋炎岩老师讲的太好了。课程内容详见B站。本文章记录的内容主要是课程中学到的命令和工具,方便自己在日常生活中使用理解。记录的内容只是课程的一部分。


一、什么是可执行文件

可执行文件也是字节序列,我们可以用cat命令去查看这个文件,当然这个时候,我们看到的是乱码。乱码的原因是可执行文件的编码格式和文本编码格式不一样。可执行文件的编码格式是ELF。

ELF是一种文件格式,可执行可链接格式(Executable and Linkable Format)。我们可以在/usr/include/elf.h这个路径下找到对这个文件的定义。
在这里插入图片描述
我们可以用xxd这个命令去查看文件的十六进制形式。

在这里插入图片描述
在这里插入图片描述
注意到main这个可执行文件的刚开始有0x45,0x46,0x4c这几个字节序列对应的ASCII刚好是ELF。
在这里插入图片描述

二、查看ELF文件

1.objdump

查看反汇编代码

objdump -d main

在这里插入图片描述
查看反汇编代码对应的源代码。(需要有debug段,gcc -g main.c)

objdump -S main

在这里插入图片描述

2.readelf

显示头部信息

readelf -h main

在这里插入图片描述
显示加载信息

readelf -l main

在这里插入图片描述

三、调试

可以用gdb调试工具调试。

  • starti 从第一条指令开始执行
  • layout asm 显示反汇编代码
  • layout src 显示源代码
  • info register 查看寄存器信息
  • bt 查看堆栈信息
  • 具体操作查看gdb手册

四、系统调用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值