IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

systemtap全局变量自动打印的原因和解决方法

Erlang非业余研究 2011-03-27 23:50:01 累计浏览 2,847 次
本机暂存

    在运行stap的时候,经常会发现在脚本结束运行的时候打出了很多无预期的东西,仔细一看都是些全局变量的dump, 这个问题比较烦人.

    我来演示下:

$ cat > g.stp
global xyz
probe begin{
  xyz=2010
  exit();
}
CTRL+D

$ sudo stap g.stp
xyz=0x7da
#多余的显示,其实我们只想静悄悄的结束

    查看了代码和文档发现:

     A global declaration may be written at the outermost level anywhere, not

     within a block of code. Global variables which are written but never read will be displayed automatically at session shutdown. The translator

     will infer for each its value type, and if it is used as an array, its key types. Optionally, scalar globals may be initialized with a string or

     number literal. The following declaration marks variables as global.

    原来只写不读的通通要打印提醒你, 知道了原因就好办了.

    加多个delete把全局变量清空,就没啥好显示了:

$ diff -up g1.stp g.stp
--- g1.stp	2011-03-25 13:14:37.940594540 +0800
+++ g.stp	2011-03-25 13:12:59.470450112 +0800
@@ -1,5 +1,6 @@
 global xyz
 probe begin{
   xyz=2010
+delete xyz
  exit();
 }

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. Fix Bug的五个阶段 (累计阅读 42,974)
  2. Linux如何统计进程的CPU利用率 (累计阅读 16,308)
  3. 调试工具之GDB (累计阅读 14,831)
  4. 我的 RHCA 之路 (累计阅读 14,013)
  5. Linux内存点滴 用户进程内存空间 (累计阅读 13,232)
  6. 给程序员新手的一些建议 (累计阅读 13,089)
  7. Linux 性能监控、测试、优化工具 (累计阅读 13,012)
  8. 关于linux内存free的一些事情 (累计阅读 12,869)
  9. ps - 按进程消耗内存多少排序 (累计阅读 12,690)
  10. Google怎么用linux (累计阅读 12,581)