zoukankan      html  css  js  c++  java
  • Linux内核调试方法总结之ptrace

    ptrace

    【用途】

    进程跟踪器,类似于gdb watch的调试方法

    【原理】【详细说明参考man ptrace帮助文档】

    ptrace系统调用主要是父进程用来观察和控制子进程的执行过程、检查并替换子进程执行序列或者寄存器值的一种手段。主要用于实现断点调试和跟踪系统调用。

    【接口说明】

    #include <sys/ptrace.h>

    long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);

    序号

    宏定义

    说明

    1

    PTRACE_TRACEME

    子进程通知内核该进程被父进程trace

    2

    PTRACE_PEEKTEXT

    偷看子进程的代码段

    3

    PTRACE_PEEKDATA

    偷看子进程的数据段

    4

    PTRACE_PEEKUSER

    偷看子进程的用户数据

    5

    PTRACE_POKETEXT

    篡改子进程的代码段

    6

    PTRACE_POKEDATA

    篡改子进程的数据段

    7

    PTRACE_POKEUSER

    篡改子进程的用户数据

    8

    PTRACE_GETREGS

    读取子进程的寄存器值

    9

    PTRACE_GETFPREGS

    读取子进程的浮点型寄存器值

    10

    PTRACE_GETSIGINFO

    查看导致子进程中止执行的信号量的信息

    11

    PTRACE_SETREGS

    设置子进程寄存器值

    12

    PTRACE_SETFPREGS

    设置子进程浮点型寄存器值

    13

    PTRACE_SETSIGINFO

    设置子进程响应的信号量

    14

    PTRACE_SETOPTIONS

    设置跟踪选项

    15

    PTRACE_GETEVENTMSG

    获取ptrace事件信息,并保存到父进程的数据段

    16

    PTRACE_CONT

    父进程中调用,通知子进程继续执行

    17

    PTRACE_SYSCALL

     

    18

    PTRACE_SINGLESTEP

    单步调试

    19

    PTRACE_SYSEMU

     

    20

    PTRACE_SYSEMU_SINGLESTEP

    多步调试

    21

    PTRACE_KILL

    删除子进程的跟踪器

    22

    PTRACE_ATTACH

    附加跟踪器到子进程上

    23

    PTRACE_DETACH

    移除子进程上的跟踪器

  • 相关阅读:
    lumen 错误&日志
    Composer设置忽略版本匹配的方法
    Laravel框架数据库CURD操作、连贯操作使用方法
    laravel5-目录结构分析
    Lumen 设置 timezone 时区
    phpstorm laravel单元测试 配置
    使用laravel的Eloquent模型获取数据库的指定列
    phpstorm 配置自带webserver ,配置根目录
    使用 OWIN 作为 ASP.NET Web API 的宿主
    angularjs webstorm 单元测试 Package.json
  • 原文地址:https://www.cnblogs.com/justin-y-lin/p/5424542.html
Copyright © 2011-2022 走看看