我是靠谱客的博主 要减肥酒窝,最近开发中收集的这篇文章主要介绍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跟踪程序的执行过程,很多时候也可以知道具体的原因。

最后

以上就是要减肥酒窝为你收集整理的systemtap学习笔记的全部内容,希望文章能够帮你解决systemtap学习笔记所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部