主要翻译自:https://wiki.freebsd.org/DTrace

FreeBSD跟Linux发行版一个比较大的差异,就是提倡源码构建。因此这里提到比较多的编译开关设置。自2012年5月后,DTrace支持默认是打开的,因此以下步骤不再需要了。留意uname -a输出的日期即可。

添加内核编译选项,打开DTrace支持

1.打开调试符号

makeoptions DEBUG="-g"       # build kernel with gdb() debug symbols

2.对于10.0之前的FreeBSD,添加:

options KDTRACE_HOOKS      # all architectures - enable general DTrace hooks
options DDB_CTF # all architectures - kernel ELF linker loads CTF data

3.对于AMD64(64位处理器),添加:

options KDTRACE_FRAME        # amd64 - ensure frames are compiled in

4.对于9.0或之后的系统,WITH_CTF=1需要在内核设置里添加:

makeoptions WITH_CTF=

(关于编译内核的步骤,可以参考:http://tthtlc.wordpress.com/2012/08/12/enabling-dtrace-on-freebsd-9/,内核的代码都在/usr/src, 拿一份比如/usr/src/sys/amd64/conf里的GENERIC复制以下,添加上面的选项就可以了。)

重编译并安装内核

1.对于FreeBSD 9及以后的系统

make buildkernel KERNCONF=DTRACE

2.对于FreeBSD 8-STABLE及更老的系统

make buildkernel WITH_CTF= KERNCONF=DTRACE

3.安装内核并重启

make installkernel KERNCONF=DTRACE
shutdown -r now

查看安装效果

sudo su切换到root用户

1.加载内核DTrace模块

kldload dtraceall

2.确认dtrace安装正确:

dtrace -l|head

3.尝试添加DTrace监控:

dtrace -n 'syscall:::entry { @num[execname] = count(); }'

如果你看到输出是:

dtrace: invalid probe specifier syscall:::entry { @num[execname] = count(); }: "/usr/lib/dtrace/psinfo.d", line : failed to copy type of 'pr_uid': Type information is in parent and unavailable

说明前面没做好,重头再来吧

用户空间的DTrace

对于FreeBSD 9.0及以后的版本

1.对于用户态的DTrace支持,需要在你的/etc/make.conf文件里添加:

STRIP=

CFLAGS+=-fno-omit-frame-pointer

这是用以提供栈跟踪的,可以提供更多信息

2.重新安装world:

make WITH_CTF=1 buildworld

shutdown -r NOW

make installworld

FreeBSD打开DTrace支持的更多相关文章

  1. SQL Server附加数据库提示“版本为661,无法打开,支持655版本……”

    在我们使用别人导出的数据库的时候,有时候我们会通过附加数据库的方法,把别人导出的数据库附加到我们的电脑中,这时,或许你会遇到这种问题,附加时,提示版本为XXX,无法打开,支持AAA版本. 这是怎么回事 ...

  2. 转:SQL Server附加数据库提示“版本为661,无法打开,支持655版本……”

    在我们使用别人导出的数据库的时候,有时候我们会通过附加数据库的方法,把别人导出的数据库附加到我们的电脑中,这时,或许你会遇到这种问题,附加时,提示版本为XXX,无法打开,支持AAA版本. 这是怎么回事 ...

  3. helm-mode打开文件支持中文搜索

    helm-mode打开文件支持中文搜索 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #83949 ...

  4. FreeBSD 13 显卡支持

    On FreeBSD 13, using drm-devel-kmod, support is the same as on Linux 5.4. This includes support for ...

  5. C# 打开钱箱支持北洋、佳博、爱普生

    /// <summary> /// 执行开钱箱操作 /// 没钱箱或打印机原功能都可以正常使用 /// </summary> public void ExecuteOpenCa ...

  6. Linphone iOS客户端编译时打开G729支持

    Assuming you were able to compile the SDK and the linphone XCode project, here is what you need to d ...

  7. 动态追踪技术(中) - Dtrace、SystemTap、火焰图

    http://openresty.org/cn/presentations.html http://weibo.com/agentzh?is_all=1 http://openresty.org/po ...

  8. linux 内核分析工具 Dtrace、SystemTap、火焰图、crash等

    << System语言详解 >> 关于 SystemTap 的书. 我们在分析各种系统异常和故障的时候,通常会用到 pstack(jstack) /pldd/ lsof/ tc ...

  9. 选择 FreeBSD 而不是 Linux 的技术性原因4

    Linux 二进制兼容性 FreeBSD 提供了与 Linux 的二进制兼容.这使得用户可以在 FreeBSD 系统上安装和运行许多 Linux 二进制文件, 而无需首先修改二进制文件.在某些特定情况 ...

随机推荐

  1. 【转】ini载入保存类,操作INI配置文件方便的很

    /****************************************************************** * * ^_^ 恶猫 独门商标 挖哈哈 * * QQ:\> ...

  2. MySQL安装(转)

    本文介绍MySQL的安装 可以单独阅读,也可以作为PHP环境搭建的一部分 PHP完整配置信息请参考 http://www.cnblogs.com/azhe-style/articles/php_env ...

  3. BI Content、Metadata Repository

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. Learning Roadmap of Deep Reinforcement Learning

    1. 知乎上关于DQN入门的系列文章 1.1 DQN 从入门到放弃 DQN 从入门到放弃1 DQN与增强学习 DQN 从入门到放弃2 增强学习与MDP DQN 从入门到放弃3 价值函数与Bellman ...

  5. Autofac 解释第一个例子 《第一篇》

    Autofac是一个轻量级的依赖注入的框架,同类型的框架还有Spring.NET,Unity,Castle等. Autofac的使用有一个非常让人郁闷的地方,就是服务器要求安装有Microsoft . ...

  6. 《BI项目笔记》创建父子维度

    创建步骤: 而ParentOriginID其实就是对应的ParentOriginID,它的 Usage 必须是 Parent 才能表示这样的一个父子维度. 查看OriginID属性, Usage 是 ...

  7. unity3d Light Probe Group图解超详细使用方法

    原创文章如需转载请注明:转载自http://blog.csdn.net/qq617119142 第一步,创建一个Panel 和 三个 cube,搭建成如下图形状 第二步,创建2个点光源,一个为绿灯,一 ...

  8. 初识python中的类与对象

    这篇博客的路线是由深入浅,所以尽管图画的花花绿绿的很好看,但是请先关注我的文字,因为初接触类的小伙伴直接看类的实现可能会觉得难度大,只要耐着性子看下去,就会有一种“拨开迷雾看未来”的感觉了. 一.py ...

  9. c#网络通信框架networkcomms内核解析之九 自定义处理方法的运行机制

    NetworkComms网络通信框架序言 本文基于networkcomms2.3.1开源版本  gplv3协议 我们自己写的处理方法都称之为自定义处理方法 比如,我们在服务器上写的与登陆相关的处理方法 ...

  10. AspectJ的基本使用

    参考: https://my.oschina.net/itblog/blog/208067