systemtap学习笔记

       在学习systemtap过程中使用show_trace,这个函数在/proc/kallsyms中存在,表示这是个有效的函数,用systemtap执行时候报错unkown symbol in module,用dmesg看错误比较明显Unkown symbol show_stack,显然说明这个函数没有导出,导出的符号表存在那里呢,看一下内核源码中的modules.txt,导出的符号表文件为Module.symvers 。具体路径在/lib/moudules/`uname -r`/Module.symvers),

       那systemtap到那里查找内核的调试符号呢?在http://sourceware.org/systemtap/man/stappaths.7.html上面有说明,一般在/usr/lib/debug/lib/modules/$(uname -r)/,SYSTEMTAP_DEBUGINFO_PATH 这个环境变量可以改写上面的地址。

        默认,systemtap查找vmlinux调试信息的路径为

        /boot/vmlinux-`uname -r` 

        /lib/modules/`uname -r`/vmlinux

        /lib/modules/`uname -r`/vmlinux.debug

        /lib/modules/`uname -r`/build/vmlinux

        /lib/modules/`uname -r`/.debug/vmlinux.debug

        /usr/lib/debug/lib/modules/`uname -r`/vmlinux.debug

        /var/cache/abrt-di/usr/debug/lib/modules/`uname -r`/

        /var/cache/abrt-di/usr/lib/debug/lib/modules/`uname -r`/vmlinux.debug

 

        stap -l 'kernel.function("*")' 列出的是调试信息中的所有函数,包括上面的show_stack。表明show_stack可以设置跟踪点,但因为没有导出,不可以在模块中调用。

        用strace跟踪程序的执行过程,很多时候也可以知道具体的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值