主要翻译自: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. js数组的一些操作

    原文地址:flash很好玩  http://www.cnblogs.com/yuzhongwusan/archive/2008/12/15/1355378.html arr = new Array(1 ...

  2. 20.fastDFS集群java代码测试

    1.工程结构   2.代码内容 FastdfsClientTest.java代码   package cn.itcast.fastdfs.cliennt; import java.io.File; i ...

  3. iOS - Mac OS X 常用快捷键

    Mac OS X 常用快捷键 1)快捷键图标: Escape 为 esc 键 无 Eject 键时用电源键代替 Space Bar 为空格键 2)基本快捷键: command + x 剪切文字 com ...

  4. Delphi IDE 设置

    显示编译进度 Tools/Environment Options

  5. [SoapUI] SoapUI JDBC REST 连接 Netezza

    How to Connect to Server 1. Apply accounts that has permission to access Netezza system for host acc ...

  6. 原!!mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集

    需求: 1.直接执行前端传来的任何sql语句,parameterType="String", 2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回 ...

  7. BFC 神奇背后的原理

    BFC已经是一个耳听熟闻的词语了,网上有许多关于BFC的文章,介绍了如何触发BFC, 以及BFC的一些用处(如清浮动,防止margin重叠等).虽然我知道如何利用BFC解决这些问题,但当别人问我BFC ...

  8. z-index、display、selector选择器优先级css优先级面试用到

    z-index:控制元素叠放顺序,哪个z-index数值越大,那个优先被叠放在上面. relative.absolute.fixed这三种情况可以使用z-index. static不可以使用. dis ...

  9. 没有纳入spring管理的类如何注入spring管理的对象

    spring 如何在普通类中调用注入的对象? spring 在Thread中注入@Resource失败,总为null~解决 springmvc 注入总是空指针异常? 以上的几个问题就是我在项目中遇到的 ...

  10. 在standalone模式下运行yarn 0.9.0对HDFS上的数据进行计算

    1.通读http://spark.incubator.apache.org/docs/latest/spark-standalone.html 2.在每台机器上将spark安装到/opt/spark ...