可以在函数中间打点了,

sudo stap -L 'process("./test").statement("func@test.c:10")'

//12.10更新

查看我内核中 bpf_prog_load 到底是位于哪一行,那么执行:

sudo sta -L 'kernel.statement("bpf_prog_load")',可以得到:

kernel.statement("bpf_prog_load@/build/linux-Ay7j_C/linux-4.4.0/kernel/bpf/syscall.c:605") $attr:union bpf_attr* $license:char[]

这样我就可以模仿上面的状态看看怎么使能bpf咯:

想看看在bpf的偏移10行能得到啥变量

记录一次对:bpf_prog_load函数的分析过程(我不想改内核重编,直接用kprobe去调试,夜太深,脑袋有点晕晕的,机械记录下来吧)

首先,找到内核的vmlinux:

/usr/lib/debug/boot/vmlinux-$(uname -r)

这个事先要下载好:

sudo apt-get update
sudo apt-get install linux-image-$(uname -r)-dbgsym

然后查看函数的起始地址:readelf -s vmlinux | grep bpf_prog_load

hon@station6:~/codebox/lua$ readelf -s vmlinux | grep bpf_prog_load
14710: ffffffff81172f90 1030 FUNC LOCAL DEFAULT 1 bpf_prog_load

辅助下用kprobe把这个函数的kprobe的addr打印出来,也是这个值,所以基本可以放心,0xffffffff81172f90 就是这个函数的起始地址了。

然后反汇编出这个函数:objdump -DSl --start-address=0xffffffff81172f90 --stop-adress=0xffffffff81173396 vmlinux > bpf_prog_load函数,然后反汇编出了400行汇编代码.

然后我们怎么从这些信息中看到函数进入到这个函数里的调用栈呢?\

这个函数经常出问题,反汇编了一份代码放在了这里:需要的时候再拿出来看:

https://github.com/honpey/codebox/commit/5b914f35af5a20e243f4a1f60d2f1f683eab2ba9

我使用kprobe查看内核中注册了几种 bpf_prog 的type:在符号表看到链表的地址是:ffffffff81e65560 d bpf_prog_types

    printk("kp->addr:0x%x\n", (unsigned long)kp.addr);
//0xffffffff81e65560 --> bpf_prog_types
// it is a list_head
struct list_head *p = 0xffffffff81e65560;
struct bpf_prog_type_list *tl;
list_for_each_entry(tl, p, list_node) {
printk("tl->type: %d\n", tl->type);
}

这样能看到所有注册的type, 返现问题所在了

是因为sys_bpf传入的type是5,但是这里只要12,3,4中类型,所以是因为没哟注册的累心哟,版本不匹配!

4.4版本中不支持tracepoint的type呀,累心累心,调了一天

 

最新文章

  1. sublime一些快捷键
  2. x01.TextProc: 两三分钟完成的一个小工具
  3. [poj2337]求字典序最小欧拉回路
  4. cocos2d-x项目实现android视频播放参考链接
  5. 数据库---MySQL常用函数总结
  6. 什么是领域驱动设计(Domain Driven Design)?
  7. maven常见问题汇总
  8. js在IE浏览器和非IE浏览器中的兼容性问题
  9. Git/Github 教程
  10. Ceph Object Gateway Admin api 获取用户列表问题
  11. 基于esp8266的智能台灯DIY
  12. 多线程之倒计时器CountDownLatch和循环栅栏CyclicBarrier
  13. 非vue-cli的花括号闪现问题
  14. centos7.4 64位安装 google-chrome 与 chromedriver 运行 Python selenium 项目
  15. SMTP发送邮件
  16. 逆袭之旅DAY15.东软实训.Oracle.约束、序列、视图、索引、用户管理、角色
  17. vue项目引入FastClick组件解决IOS系统下h5页面中的按钮点击延迟,连续点击无反应的问题
  18. 02:OC和C对比
  19. C# 把字符串中间的多个连续的空格转化成一个空格
  20. 把一个activity作为弹窗

热门文章

  1. data-ng-repeat 指令
  2. java基础30问
  3. 漂亮提醒框js
  4. 【杂题总汇】UVa-10618 Tango Tango Insurrection
  5. 《JSON笔记之二》----封装JSONUtil
  6. 在github上查找star最多的项目
  7. python__基础 : 类的 __slots__ 方法
  8. px与em的区别,权重的优先级
  9. Skyscrapers Covered in Solar Pancels【太阳能电池板覆盖的摩天大楼】
  10. opencv中对图像的像素操作