// Jumbo stp script // Arguments: @1 uprobes_exe, @2 libuprobes_lib.so # lib probe process(@1).function("main") { printf("main\n"); } probe process(@1).function("main_func") { printf("main_func: %d\n", $foo); } probe process(@2).function("lib_main") { printf("lib_main\n"); } probe process(@2).function("lib_func") { printf("lib_func: %d\n", $bar); } #mark probe process(@1).mark("main_count") { printf("main_count: %d\n", $arg1); } probe process(@2).mark("func_count") { printf("func_count: %d\n", $arg1); } #uname probe process(@1).function("main"), process(@1).function("main_func") { printf("exe: %s=%s\n",probefunc(), usymname(uaddr())); } probe process(@2).function("lib_main"), process(@2).function("lib_func") { printf("lib: %s=%s\n",probefunc(), usymname(uaddr())); } # ustack global hits = 0; probe process(@1).function("main_func") { if (hits == 0) { log("print_ubacktrace exe 0"); print_ubacktrace(); hits++; } else if (hits == 1) { log("print_usyms exe 1"); print_usyms(ubacktrace()); hits++; } } probe process(@2).function("lib_func") { if (hits == 2) { log("print_ubacktrace lib 2"); print_ubacktrace(); hits++; } else if (hits == 3) { log("print_usyms lib 3"); print_usyms(ubacktrace()); hits++; } }