Needs debuginfo, either in a package-debuginfo rpm or equivalent or by building with ‘cc -g’:
[root@jouet ~]# perf probe -L icmp_rcv:52 | head -15 52 if (rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST)) { /* * RFC 1122: 3.2.2.6 An ICMP_ECHO to broadcast MAY be * silently ignored (we let user decide with a sysctl). * RFC 1122: 3.2.2.8 An ICMP_TIMESTAMP MAY be silently * discarded if to broadcast/multicast. */ 59 if ((icmph->type == ICMP_ECHO || 60 icmph->type == ICMP_TIMESTAMP) && net->ipv4.sysctl_icmp_echo_ignore_broadcasts) { goto error; } if (icmph->type != ICMP_ECHO && icmph->type != ICMP_TIMESTAMP && [root@jouet ~]# perf probe icmp_rcv:59 Added new event: probe:icmp_rcv (on icmp_rcv:59) You can now use it in all perf tools, such as: perf record -e probe:icmp_rcv -aR sleep 1 [root@jouet ~]# perf trace --no-syscalls --event probe:icmp_rcv/max-stack=5/ 0.000 probe:icmp_rcv:(ffffffffb47b7f9b)) icmp_rcv ([kernel.kallsyms]) ip_local_deliver_finish ([kernel.kallsyms]) ip_local_deliver ([kernel.kallsyms]) ip_rcv_finish ([kernel.kallsyms]) ip_rcv ([kernel.kallsyms]) 1025.876 probe:icmp_rcv:(ffffffffb47b7f9b)) icmp_rcv ([kernel.kallsyms]) ip_local_deliver_finish ([kernel.kallsyms]) ip_local_deliver ([kernel.kallsyms]) ip_rcv_finish ([kernel.kallsyms]) ip_rcv ([kernel.kallsyms]) ^C[root@jouet ~]#
Humm, lots of redundant info, guess we could do away with those ([kernel.kallsyms) in all the callchain lines…
Trackbacks
[…] Getting backtraces from arbitrary places […]