您的位置:首页 > 其它

不久前被问到的一个问——GDB为什么能够修改一个进程中的数据

2016-04-16 20:45 405 查看
有天上课,突然被问到一个问题,为什么gdb调试工具能够修改另一个进程里面的变量的值,能够访问这个进程的内存,我猜想是用了什么共享内存,后来查资料后才明白是这样的原理。

linux下提供了一个名叫ptrace的系统调用,它赋予父进程对子进程追踪和控制的能力,允许父进程替换和修改子进程的内存空间,同时父进程会拦截发往子进程的信号,当然SIGKILL信号除外,子进程会一直阻塞,进程的状态为:TASK_TRACED 当父进程接受到信号时,会对子进程做相应的修改然后通知子进程运行。

这便是gdb能够调试的基础。由于不想深入的去了解所以只是做了简单的阐述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: