问题标签 [systemtap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
938 浏览

android - Android 上的 SystemTap

当我在 android 上执行命令“staprun”时,我遇到了以下问题:

模块 msyscall_all.ko 与我的 android 运行的内核交叉编译。

首先,我确信 msyscall_all.ko 是完全正确的,因为我使用命令“insomd”和“lsmod”来确保它是正确的。我这样做如下:

其次,我按照以下说明进行操作:http: //omappedia.org/wiki/Systemtap#Systemtap_1.0_code_update_for_OMAP_ARM_platforms

而且我的systemtap-1.0-omap 交叉编译成功!!但是,在我使用“adb push”将 systemtap-1.0-omap 推送到我的 android 设备并运行它之后,我收到以下错误:

/data/systemtap-1.0-omap/bin/staprun:1:语法错误:“(”意外

当在 ubuntu 上运行“staprun”时,它给了我如何运行“staprun”的建议,当它在 android 设备上运行时,它出错了:

我已经尽力了,但我无法解决它!

0 投票
0 回答
180 浏览

ubuntu - systemtap 无法在 Ubuntu 3.2 上找到跟踪事件

systemtap 无法找到跟踪事件,即使它们都在目录中可用:/sys/kernel/debug/tracing/events。运行“perf record sched”会发现所有 sched 跟踪事件没有任何问题。

系统正在运行:Linux(无)3.2.0-48-virtual #74-Ubuntu SMP Thu Jun 6 20:02:55 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

stap -l 'kernel.trace("*")

未找到活动

systemtap 可以毫无问题地找到内核函数。

stap -l 'kernel.function("*")'

.. kernel.function("AUDIT_MODE@/build/buildd/linux-3.2.0/security/apparmor/include/policy.h:311") kernel.function("BLEND_OP@/build/buildd/linux-3.2.0 /crypto/sha256_generic.c:48") kernel.function("BLOCK_NEXT@/build/buildd/linux-3.2.0/drivers/staging/zram/xvmalloc.c:82") ....

我在 openSUSE 上看到了一个错误报告:

错误 800335 - devel:tools/systemtap: 未声明对 libebl1 的依赖

但 libebl1 是已安装的 Elfutils 软件包的一部分。导致 systemtap 找不到跟踪事件可能会丢失什么。

谢谢,阿米尔。

0 投票
1 回答
693 浏览

systemtap - 在 systemtap 中,如何在用户空间进程中捕获函数的返回?

以下 systemtap 脚本无法编译:

它说:

语义错误:解析探测点时:proxy.stp:6:7 处的标识符“进程”源:探测进程(“/home/martin/experiments/systemtap/a.out”).function(“doSomething”).return ^

语义错误:进程返回探针不可用 [man error::inode-uprobes] Pass 2:分析失败。[man error::pass2] 提示:/usr/share/doc/systemtap/README.Debian 应该可以帮助您入门。

我想在函数退出时捕获,而不是进程。如果我删除.return它,它会编译并运行良好。如何捕获函数退出?

我在 Ubuntu 13.04、Linux 3.8.0-29-generic、系统分流器 2.1/0.153 上。

0 投票
1 回答
301 浏览

systemtap - Systemtap,打印目标的本地变量和省略号

我在内核 3.11.0-generic 的 ubuntu 13.10 上运行 systemtap 2.2.1。

以下脚本

打印以下结果

root@u1310:~# stap net.stp

开始...

{.next=0x0, .prev=0x0, .tstamp={.tv64=0}, .sk=0x0, .dev=0xffff880134c94000, .cb="", ._skb_refdst=0, .sp=0x0, .len= 46, .data_len=0, .mac_len=14, .hdr_len=0, ={.csum=0, ={.csum_start=0, .csum_offset=0}}, .priority=0, .local_df=0, .cloned =0, .ip_summed=1, .nohdr=0, .nfctinfo=0, .pkt_type=0, .fclone=0, .ipvs_property=0, .peeked=0, .nf_trace=0, .protocol=8, .destructor =0x0, .nfct=0x0, .nfct_reasm=0x0, .nf_bridge=0x0, .skb_iif=0, ... } <-- 如何打印所有字段而不仅仅是省略号?

根@u1310:~#

如何打印结构中的所有字段而不是“省略号”...

任何帮助、指针和/或参考将不胜感激,我的 google-fu 只带我到目前为止......

0 投票
1 回答
712 浏览

c++ - 可以通过 systemtap 探针停止进程以便可以附加 gdb 吗?

我们有一个多进程应用程序,其中调试特定的子进程被证明是困难的。由于进程之间的消息传递超时,我们没有时间将 gdb 附加到目标子进程,所以我想知道是否可以通过 systemtap 探针停止进程?

我认为应该需要一个简单的探测,例如:

不幸的是,上面没有编译......有什么想法吗?


我不是 systemtap 专家,所以这可能不是最好的解决方案,但对于任何有兴趣的人来说,这是我的粗略解决方案:

0 投票
1 回答
1002 浏览

linux-kernel - kprobes中未定义异常处理程序(__und_svc)的作用是什么?

我试图将 kprobe 转换为可加载的内核模块。

我能够运行samples/kprobes/内核树文件夹中可用的示例。

如果我们在 kernel( CONFIG_KPROBES) 中配置 kprobes,那么svc_entry宏将在__und_svc()处理程序中扩展为 64 字节。

参考: http://lxr.free-electrons.com/source/arch/arm/kernel/entry-armv.S?a= arm#L245

我的目标是不涉及内核方面,将 kprobe 作为内核模块。

所以内核在不启用 CONFIG_KPROBES 的情况下编译。所以 svc_entry 宏将在 __und_svc()中扩展为 0

我想摆脱这些疑虑。

  1. 如果 kprobe 处理了未定义的指令异常(只创建了 bcos kprobe),那么为什么__und_svc()会被调用。__und_svc()处理程序对于 kprobes的作用是什么?

  2. 如果 64 字节内存是强制性的,那么如何在不编译内核的情况下进行分配。即如何动态地做到这一点。??

请分享你的知识。

0 投票
1 回答
173 浏览

function - 官方systemtap教程第2.3节“练习”的第三个练习

问题描述:

清单:socket_trace.stp

通过从第一个探测器中删除 .call 修饰符来更改列表。注意函数入口和函数返回现在不再匹配了。这是因为现在第一个探针将匹配普通函数入口和内联函数。尝试将 .call 修饰符放回去并为探针添加另一个探针 kernel.function("*@net/socket.c").return 您可以在探针处理程序中使用什么 printf 语句来很好地显示内联函数条目.call 和 .return 线程缩进输出之间?

我不知道如何表明函数返回探针处理程序中发生了内联函数调用(如果有的话)?有人可以帮忙吗?提前致谢。

0 投票
1 回答
1468 浏览

gcc - 如何在 systemtap 中检查用户空间函数的变量?

在 systemtap 中检查用户空间应用程序的局部变量时遇到问题。

我这样写一个test.c:

并编译它-g

Systemtap 可以看到func():的变量pval

所以我使用这个 stp 来观察变量:

但是测试程序执行时结果中的局部变量不正确,它显示:

我正在使用 fedora19:

有人可以遇到这个问题或给我一个解决方案吗?

0 投票
1 回答
127 浏览

rpm - systemtap 为其他计算机生成仪器

根据https://sourceware.org/systemtap/SystemTap_Beginners_Guide/cross-compiling.html#preppingxcompile,我们可以按照以下步骤为其他计算生成工具。

*1。在每个目标系统上安装 systemtap-runtime RPM。

  1. 通过在每个目标系统上运行 uname -r 来确定在每个目标系统上运行的内核。

  2. 在主机系统上安装 SystemTap。您将为主机系统上的目标系统构建检测模块。有关如何安装 SystemTap 的说明,请参阅第 2.1.1 节,“安装 SystemTap”。

  3. 使用之前确定的目标内核版本,按照第 2.1.2 节“安装所需的内核信息 RPM”中描述的方法在主机系统上安装目标内核和相关 RPM。如果多个目标系统使用不同的目标内核,您将需要对目标系统上使用的每个不同内核重复此步骤。*

**我的问题是

  1. 如何在一个主机系统中安装多个版本的 kernel-devel?
  2. 我尝试卸载kernel-devel,kernel-debuginfo,kernel-debuginfo-common,并为目标主机安装一组新的,(目标主机和本主机版本不同),然后我发现运行“stap-- remote xxx" 也需要相同的内核版本。我怎样才能让生活变得轻松?我应该重新安装内核以匹配目标主机的内核版本吗?**

$ sudo rpm -ivh 下载/kernel-devel-2.6.32-220.el6.x86_64.rpm

[sudo] zhifan 的密码:

警告:下载/kernel-devel-2.6.32-220.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY Preparing... ############## ############################# [100%]

0 投票
1 回答
359 浏览

sockets - Systemtap %M printf format only returns one character

I'm trying to print the data received on a socket - the contents of ubuf on the return of sys_recv. I cant get the %M format specifier to work properly. Can someone please explain how to use it properly. Thanks

using this probe: [laris@kakitis stap]$ cat socket-recv.stp

From my reading of the man page the format %10M should return 10 bytes from the location pointed to by $ubuf:void but I only get 1. Adjusting the parameter 10 shifts the one character output rather than showing more or less memory

Changing 10 to 2 gives this

System particulars are: