在glibc里找ioctl()系统调用

背景:了解ioctl()从用户空间到内核空间的整个调用链。内核那边已经理清了,glibc这边不太好弄。晚上各种查,捣鼓出了一点结果。

首先从下载的glibc源码里找ioctl(),没发现比较直接的代码实现(主要是没看到陷入内核的相关代码)。后来不得已,干脆调试glibc代码得了,以前没调试过,不妨现在一试。

调试glibc代码,主要参考这两篇:使用gdb调试glibc用gdb追踪glibc代码执行过程。大致过程是:

(1) 安装glibc符号表:$sudo apt-get install libc6-dbg
(2)下载glibc源码:$sudo apt-get source libc6-dev

a. 命令执行完后,在当前目录下生成eglibc-xxx目录,里面就是glibc源码。我自己生成的目录为~/eglibc-2.15

(3)编译生成带有调试信息的可执行文件:$gcc -g -o xxx xxx.c

(4)调试xxx:gdb xxx

a. 指定源码搜索路径:directory ~/eglibc-2.15

其实~/eglibc-2.15这个目录范围很广,如果知道自己要调试的库函数所在的具体路径,就直接指定这个路径。就鄙人这个情况,我是不知道ioctl()是在哪个路径哪个文件下的,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值