不久前被问到的一个问——GDB为什么能够修改一个进程中的数据
来源:互联网 发布:javascript跑马灯效果 编辑:程序博客网 时间:2024/05/22 04:59
有天上课,突然被问到一个问题,为什么gdb调试工具能够修改另一个进程里面的变量的值,能够访问这个进程的内存,我猜想是用了什么共享内存,后来查资料后才明白是这样的原理。
linux下提供了一个名叫ptrace的系统调用,它赋予父进程对子进程追踪和控制的能力,允许父进程替换和修改子进程的内存空间,同时父进程会拦截发往子进程的信号,当然SIGKILL信号除外,子进程会一直阻塞,进程的状态为:TASK_TRACED 当父进程接受到信号时,会对子进程做相应的修改然后通知子进程运行。
这便是gdb能够调试的基础。由于不想深入的去了解所以只是做了简单的阐述。
0 0
- 不久前被问到的一个问——GDB为什么能够修改一个进程中的数据
- 修改一个进程的权限
- 一个进程能够打开最大文件句柄数的设置
- 批量修改表中的一个字段的部分数据
- 如何让一个jqGrid的数据能够进行编辑
- 构建一个能够接收别的App数据的APP
- 修改一个结束进程的程序
- 为什么选择一个好的域名,能够帮助网站更加的容易被人记住
- 黑马程序员—这是一个能够键盘录入路径去批量修改指定文件夹下所有指定文件内容的方法
- 评论:一个CN域名为什么能够价值百万?
- java里char为什么能够存储一个汉字
- 给定一个字符串,问是否能够通过添加一个字母将其变成“回文串”
- PHP 中的一个简单的进程锁
- 问一个棘手的问题!!
- 问一个openshift的问题
- ActivityGroup 为什么不能启动一个其他进程的Activity
- GDB 7.0 中文手册 —— 1. GDB简介和一个简单的使用例子
- 一个操作系统的实现——进程
- java中的基本类型
- 算法导论 思考题 2-2
- 视频直播,手机直播,视频秀的app简介
- HTML5-WebSocket简单易懂的介绍
- JavaScript数组去重
- 不久前被问到的一个问——GDB为什么能够修改一个进程中的数据
- Android使用本地缓存解析远程服务器JSON数据
- 基于泰勒展开式的高精三角函数实现,方法三
- Java基础复习(二)
- HNOI 2016 暴力之旅
- spring事务管理
- 用Apache httpclient模拟登陆学生个人信息系统
- Java编程思想--格式化说明符
- 专题二1005