How to track the functions in self-written module using SystemTap?

David Smith dsmith@redhat.com
Mon Nov 30 21:52:00 GMT 2015


On 11/26/2015 12:10 AM, Nan Xiao wrote:
> Hi David,
> 
> I do "insmod kex.ko" and "rmmod kex" repeatedly, but It seems the
> related probes can't be triggered:
> 
> # stap -l 'module("/root/kernel/105.ops/kex.ko").function("*")'
> module("/root/kernel/105.ops/kex.ko").function("_open@/root/kernel/105.ops/kex.c:21")
> module("/root/kernel/105.ops/kex.ko").function("_read@/root/kernel/105.ops/kex.c:45")
> module("/root/kernel/105.ops/kex.ko").function("_release@/root/kernel/105.ops/kex.c:33")
> module("/root/kernel/105.ops/kex.ko").function("copy_to_user@/usr/src/kernels/3.10.0-123.el7.x86_64.debug/arch/x86/include/asm/uaccess_64.h:72")
> module("/root/kernel/105.ops/kex.ko").function("kex_cleanup@/root/kernel/105.ops/kex.c:90")
> module("/root/kernel/105.ops/kex.ko").function("kex_init@/root/kernel/105.ops/kex.c:61")
> # stap -e 'probe
> module("/root/kernel/105.ops/kex.ko").function("kex_init"),
> module("/root/kernel/105.ops/kex.ko").function("kex_cleanup")
> {print_backtrace()}'

Hmm. Note that I've done a good bit of work in the area of catching
module init functions recently. What version of systemtap are you
working with?

Let's see if systemtap can catch anything in your module. Try something
like:

# stap -e 'probe module("/root/kernel/105.ops/kex.ko").function("*") {
printf("%s\n", ppfunc()) }'

-- 
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)



More information about the Systemtap mailing list