crash —— 如何获取某个系统调用入口代码?

简介: crash —— 如何获取某个系统调用入口代码?

通过sys命令可以获取当前系统的系统调用的信息:

crash> sys -c
NUM  SYSTEM CALL                FILE AND LINE NUMBER
  0  __x64_sys_read             ../fs/read_write.c: 621
  1  __x64_sys_write            ../fs/read_write.c: 646
  2  __x64_sys_open             ../fs/open.c: 1330
  3  __x64_sys_close            ../fs/open.c: 1437
  4  __x64_sys_newstat          ../fs/stat.c: 409
  5  __x64_sys_newfstat         ../fs/stat.c: 447
  6  __x64_sys_newlstat         ../fs/stat.c: 420
  7  __x64_sys_poll             ../fs/select.c: 1068
  8  __x64_sys_lseek            ../fs/read_write.c: 311
  9  __x64_sys_mmap             ../arch/x86/kernel/sys_x86_64.c: 86
 10  __x64_sys_mprotect         ../mm/mprotect.c: 815
 11  __x64_sys_munmap           ../mm/mmap.c: 2801
 12  __x64_sys_brk              ../mm/mmap.c: 170
 13  __x64_sys_rt_sigaction     ../kernel/signal.c: 4411
 ...

其中第1列表示系统调用号,第2列表示系统调用函数名,第3列表示对应的源码位置。

1 __x64_sys_write ../fs/read_write.c: 646为例:

write系统调用系统调用号是1,函数名__x64_sys_write,代码位置:

相关文章
|
20天前
|
网络协议 Linux 数据处理
系统库调用运行在内核模式
【10月更文挑战第29天】系统库调用是应用程序与操作系统内核之间的重要桥梁,部分关键的系统库调用会运行在内核模式下,以实现对受限资源的访问、保证系统的稳定性和安全性以及协调多任务和资源共享等功能。了解系统库调用与内核模式的关系,对于深入理解操作系统的工作原理和应用程序的运行机制具有重要意义。
40 3
|
2月前
|
Rust 关系型数据库 C语言
使用uftrace跟踪bpf程序的执行
使用uftrace跟踪bpf程序的执行
|
4月前
|
Java Serverless 应用服务中间件
函数计算操作报错合集之JVM启动时找不到指定的日志目录,该如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
弹性计算 前端开发 Serverless
Serverless 应用引擎操作报错合集之在阿里云函数计算中,调用了FC函数但是没有执行或者报错,并且在FC函数后台也看不到调用记录日志如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
测试技术 API
【OS Pintos】Project1 项目要求说明 | 进程中止信息 | 参数传递 | 用户内存访问 | 有关项目实现的建议
【OS Pintos】Project1 项目要求说明 | 进程中止信息 | 参数传递 | 用户内存访问 | 有关项目实现的建议
148 0
|
6月前
|
JavaScript IDE Java
bugly崩溃排查3:观察是谁调用了崩溃函数
bugly崩溃排查3:观察是谁调用了崩溃函数
75 0
|
6月前
|
存储 安全 Linux
Linux 内核启动流程与入口函数分析
Linux 内核启动流程与入口函数分析
233 0
|
安全
驱动开发:取进程模块的函数地址
在笔者上一篇文章`《驱动开发:内核取应用层模块基地址》`中简单为大家介绍了如何通过遍历`PLIST_ENTRY32`链表的方式获取到`32位`应用程序中特定模块的基地址,由于是入门系列所以并没有封装实现太过于通用的获取函数,本章将继续延申这个话题,并依次实现通用版`GetUserModuleBaseAddress()`取远程进程中指定模块的基址和`GetModuleExportAddress()`取远程进程中特定模块中的函数地址,此类功能也是各类安全工具中常用的代码片段。
235 0
|
Linux
Linux驱动开发 驱动程序的具体编写及出口入口函数解析,printk打印内核信息
Linux驱动开发 驱动程序的具体编写及出口入口函数解析,printk打印内核信息
241 0
|
消息中间件 存储 Linux
FreeRTOS记录(二、FreeRTOS任务API认识和源码简析)
在了解了基本的环境和框架之后,对FreeRTOS 的任务,消息队列,信号量,事件,软件定时器 这些基础的功能部分也得有个认识。 这篇文章主要介绍了一下关于任务的API以及源码的简单分析。
573 1
FreeRTOS记录(二、FreeRTOS任务API认识和源码简析)