• 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

    移除子进程上的跟踪器

  • 相关阅读:
    Android UI基本结构
    深入理解 Java中的 流 (Stream)
    StringBuffer和StringBuild区别
    HttpClient和HttpURLConnection的区别
    Http会话
    WKWebView 实现iOS与H5的交互<转>
    UIVisualEffectView实现毛玻璃效果
    Mac下配置Eclipse <转>
    最新 macOS Sierra 10.12.3 安装CocoaPods及使用详解<转>
    Bitcode是什么,如何配置?
  • 原文地址:https://www.cnblogs.com/justin-y-lin/p/5424542.html
Copyright © 2020-2023  润新知