随笔分类 -  内核调试

主要包括qemu调试、内核trace工具的使用等
摘要:ip_local_out->OUTPUT->dst_out->ip_output-> POSTROUTING -->ip_output_finish 上面的路径中啊,在OUTPUT和POSTROUTING之间的都没有发生什么新事情,设置了两个地方一个是skb->dev,一个是skb->protoco 阅读全文
posted @ 2018-05-21 13:41 honpey 阅读(339) 评论(0) 推荐(0)
摘要:为啥systemtap没找到函数 hon@station6:~/codebox/stap/net$ sudo stap -L 'kernel.function("sock_recvmsg_nosec")'kernel.function("sock_recvmsg_nosec@/build/linux 阅读全文
posted @ 2018-05-11 09:28 honpey 阅读(719) 评论(0) 推荐(0)
摘要:register_trace_##name宏中 tracepoint_probe_register在这个函数中在同一个cp上可以挂多个处理函数, 查看函数:trace_block_rq_issue中定义了这个tracepoint以及tracepoint的钩子函数 tracepoint中给你输入了tr 阅读全文
posted @ 2018-05-09 02:02 honpey 阅读(1572) 评论(0) 推荐(0)
摘要:巴达努斯 阅读全文
posted @ 2018-05-02 21:21 honpey 阅读(164) 评论(0) 推荐(0)
摘要:perf事件的切换发生在函数perf_event_task_sched_in finish_task_switch函数中调用perf_event_task_sche_in prepare_task_switch > finish_task_switch 理一下发生进程切换时的行为,perfs是注册到 阅读全文
posted @ 2018-04-27 21:38 honpey 阅读(1653) 评论(0) 推荐(0)
摘要:vim ./arch/x86/kernel/hw_breakpoint.c perf如何控制采样的频率 perf采样不同的事件,得到的不是一样 cycles: 向PMU中增加不同的函数,增加不同 使用perf默认的事件,抓不到我的用户态进程, cpu-cycles会抓到这个事件 相同的事件,不同的采 阅读全文
posted @ 2018-04-27 09:27 honpey 阅读(1101) 评论(0) 推荐(0)
摘要:bcc编译,直接在docker里编,太方便;第一次深切体会到docker的强大; 1)下载bcc源码; 2) 把源码中的Dockerfile.ubuntu重命名为Dockerfile 3)sudo docker build . 4)经过大约10分钟,编译完毕; 编好的文件都都在镜像里了,然后用sud 阅读全文
posted @ 2018-03-21 01:14 honpey 阅读(507) 评论(0) 推荐(0)
摘要:测试代码:https://github.com/honpey/codebox/tree/master/dlink (gdb) watch *601030Hardware watchpoint 2: *601030(gdb) watch *0x601030Hardware watchpoint 3: 阅读全文
posted @ 2018-03-17 22:31 honpey 阅读(680) 评论(0) 推荐(0)
摘要:这个问题的根源在:使用动态链接库可以省内存,因为多个进程可以共享物理内存; 老觉得这部分逻辑是在用户态的动态加载器完成的,但是想想奇怪,动态加载器是嵌入到进程里的so,案例说是不会感知到外面的世界的啊,难道是内核? 【等等,动态加载器,可能直接就是在不同的进程中中共享的一份,是不是它本身就记录着整个 阅读全文
posted @ 2018-03-17 08:27 honpey 阅读(587) 评论(0) 推荐(0)
摘要:动态链接是个 _GLOBAL_OFFSET_TABLE_是干嘛的? https://www.codeproject.com/Articles/33340/Code-Injection-into-Running-Linux-Application 动态链接是怎么回事? 静态链接的重定位表中有这个.o文 阅读全文
posted @ 2018-03-15 22:23 honpey 阅读(383) 评论(0) 推荐(0)
摘要:他们会把做内核的人当成无所不能的,认为你们对反编译啥的都应该会。 俗话说的好,人要活成别人想要的样子嘛: 看下如何停止进程,让大家看到内存中到底是啥样子; 简单的print globalA当然能输出来变量globalA的地址以及这个地址中的值,但是如果这里是一个链表,能通过编程的方法把这里的数值给d 阅读全文
posted @ 2018-03-11 22:59 honpey 阅读(1298) 评论(1) 推荐(1)
摘要:在systemstap中自定义函数 Embedded C can be the body of a script function. Instead enclosing the function body statements in { and}, use %{ and %}. Any enclos 阅读全文
posted @ 2018-03-11 00:10 honpey 阅读(522) 评论(0) 推荐(0)
摘要:在做blk层之前,先把proto搞清楚 ffi_lua metatype可以给函数加方法, lua中冒号是啥意思?冒号会传入self,但是点号不会传入self 阅读全文
posted @ 2017-12-21 22:30 honpey 阅读(211) 评论(0) 推荐(0)
摘要:lua中的ffi是如何解析的呢? 拿bcc中对proto的解析说起; metatype是有大学问的: 其中,ip_t就是 _G(pkg) 这是变量的最后一道屏障,如果在这里访问不到变量,那么lua就要报错了! lua中的表真是高度抽象的一个概念: pkg.ip.proto, pkg是全局的包,然后i 阅读全文
posted @ 2017-12-13 23:01 honpey 阅读(645) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/zzz3265/article/details/41146569 这里写出了luajit的字节码 阅读全文
posted @ 2017-12-12 23:18 honpey 阅读(629) 评论(0) 推荐(0)
摘要:不如用c写比较简单呢 都要在lua中解析好数据结构,不过也可以用ffi呢。。。proto.lua 阅读全文
posted @ 2017-12-11 09:22 honpey 阅读(325) 评论(0) 推荐(0)
摘要:一条bpf的指令包括:8字节长 其中操作码共8位,0,1,2这三位表示的是该操作的大类别:0X07 BPF_LD(0x00) / BPF_LDX(0x01) / BPF_ST(0x02) / BPF_STX(0x03) / BPF_ALU(0x04) / BPF_JMP(0x05) / BPF_RE 阅读全文
posted @ 2017-12-09 22:57 honpey 阅读(2198) 评论(0) 推荐(0)
摘要:sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D4284CDD echo "deb https://repo.iovisor.org/apt/xenial xenial main" | sudo tee /etc/apt/sources.list.d/iovisor.list sudo apt-get update s... 阅读全文
posted @ 2017-12-02 09:21 honpey 阅读(207) 评论(0) 推荐(0)
摘要:perf的事件包括: 硬件事件:branch-instrctions / branch-miss / bus-cycles / cache-miss / cache-reference / cycles / instructions 软件事件:cpu-clocks / tasks-clock ... 阅读全文
posted @ 2017-12-01 09:14 honpey 阅读(390) 评论(0) 推荐(0)
摘要:zhangyichun大神的systemtap脚本: perf top -e ext4:ext4_write_begin 这有什么意义么?每一次都去踩一个ext4的读取事件?但是对于软事件来说,设置-F意义不大,设置后好像会出现问题 阅读全文
posted @ 2017-11-30 23:41 honpey 阅读(228) 评论(0) 推荐(0)