ptrace 是 Linux 环境下,许许多多分析调试工具,如 straceltrace 等,所使用的最核心的系统调用。ptrace,即 process trace,指进程追踪。它能让一个进程控制及影响另一个进程的行为,比如让另外一个进程停止运行,获取另外一个进程内存地址空间中的值,设置另外一个进程内存中的值,获取另外一个进程的寄存器的值,设置另外一个进程的寄存器的值,等等等等。

ptrace 系统调用的 C 库接口原型如下:

       #include <sys/ptrace.h>long ptrace(enum __ptrace_request request, pid_t pid,void *addr, void *data);

后面更详细地描述 ptrace 系统调用。

描述

ptrace() 提供了一种方法,让一个进程(称为 “tracer”)可以观测及控制另外一个进程(称为 “tracee”)的执行,让 tracer 检测和修改 tracee 的内存和寄存器。它主要用于实现断点调试和系统调用追踪,前者即 GDB 这种调试器,后者即 strace 等系统调用追踪工具。

Tracee 首先需要被 attached 到 tracer 上。Attachment 和后续的命令是针对特定线程的:在一个多线程进程中,每个线程可以被单独 attached 到一个(有可能不同的) tracer,或者不被 attached,即不被调试。因此

ptrace 系统调用相关推荐

  1. linux(4)-Ptrace 系统调用的使用

    文章目录 问题 运行环境 程序组成 实现思路 模块划分 完整代码 程序运行及结果 问题 利用ptrace系统调用实现一个简单的软件调试器.基本功能包括能够截获被调试进程的信号,被调试进程进入断点后能够 ...

  2. strace实现原理:ptrace系统调用

    <GDB调试之ptrace实现原理> <C语言程序调用栈:backtrace+backtrace_symbols+backtrace_symbols_fd> 目录 strace ...

  3. Linux ptrace系统调用详解:利用 ptrace 设置硬件断点

    <GDB调试之ptrace实现原理> <C语言程序调用栈:backtrace+backtrace_symbols+backtrace_symbols_fd> <strac ...

  4. ptrace系统调用的实现

    最近遇到这样一个问题,机器跑着跑着画面冻结了,打开top看到Xorg的cpu占用率100%.想用gdb挂上去看一下,结果gdb一直卡着挂不上去.后来又换用perf分析,结果发现进程99%的时间花在了一 ...

  5. Linux 系统调用 Ptrace 详解

    From:https://blog.csdn.net/u012417380/article/details/60470075 Ptrace 详解:https://www.cnblogs.com/tan ...

  6. linux ptrace,如何利用Ptrace拦截和模拟Linux系统调用

    写在前面的话 ptrace(2)这个系统调用一般都跟调试离不开关系,它不仅是类Unix系统中本地调试器监控实现的主要机制,而且它还是strace系统调用常用的实现方法.ptrace()系统调用函数提供 ...

  7. 一文带你看透 GDB 的 实现原理 -- ptrace真香

    文章目录 Ptrace 的使用 GDB 的基本实现原理 Example1 通过ptrace 修改 被追踪进程的内存数据 Example2 通过ptrace 对被追踪进程进行单步调试 Ptrace的实现 ...

  8. ptrace原理与性能对比

    strace starce在Linux上面是一个比较实用的工具,平常可以跟踪线上进程执行了哪些协同调用的工具,并在debug调试的情况下也能很好的使用,这一切的功能也都是基于Linux提供的强大的pt ...

  9. Linux上程序调试的基石(1)--ptrace

    引子:  1.在Linux系统中,进程状态除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TASK_STOPPED等,还有一个TASK_TRACED.这表明这个进程处于 ...

最新文章

  1. animation与transition区别
  2. R语言ggplot2可视化分面图(facet_wrap)、使用size参数自定义设置分面图标签栏(灰色标签栏)中的标签文本的字体大小
  3. Eclipse常用快捷键、常用设置、常见问题等
  4. 迭代器、可迭代对象与生成器
  5. python中if not x: 和 if x is not None: 和 if not x is None的使用和区别
  6. python强制结束函数_为什么Python没有 main 函数?终于有人给出了正确答案!
  7. CSS——基础选择器
  8. Atitit.web预览播放视频的总结
  9. RocketMQ常见面试题
  10. aop源码分析之 —— 创建代理对象
  11. Node.js自学完全总结
  12. Spring Boot Serverless 实战系列“架构篇”首发 | 光速入门函数计算
  13. SPI通信实验---verilog(FPGA作为从机,使用可读可写)
  14. 蓝桥杯2011--2--歌赛新规则
  15. LaTex 论文排版(1): Win10 下 LaTex所需软件安装 (Tex live 2018 + Tex studio)
  16. 一种简单的短路检测电路设计
  17. Scrape Center爬虫平台之spa8案例
  18. mysql char存汉子_char如何存储汉字
  19. 【Linux】【Kernel】BUG: scheduling while atomic问题分析
  20. FF-A架构中CA到TA的调用模型

热门文章

  1. 数据库-优化-数据库结构的优化-拆分优化
  2. php 在对象中递归 坑,PHP递归问题,数据总是对不上
  3. ui uview 安卓开发_uni-app UI框架之uview-ui使用教程
  4. python之路day9_亮仔的Python之路Day9——Python知识体系重组
  5. Asp.NetCore-部署到IIS
  6. java B2B2C Springcloud电子商城系统-Spring Cloud常见问题与总结(四)
  7. Kebernetes 学习总结(9)认证-授权-RBAC
  8. AI看脸、测肤,左可美妆新零售,右能智慧医美
  9. 深蓝词库转换1.2版本发布——支持紫光拼音和拼音加加
  10. orcle10忘记密码