zoukankan      html  css  js  c++  java
  • FreeBSD打开DTrace支持

    http://www.cnblogs.com/Lifehacker/p/FreeBSD_9_DTrace_support.html

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

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

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

    1.打开调试符号

    makeoptions DEBUG="-g"       # build kernel with gdb(1) 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=1

    (关于编译内核的步骤,可以参考: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=1 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 37: 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

  • 相关阅读:
    怎么利用 ChromeDriver 和 Selenium对 CEF应用进行自动化测试-java实现
    全国省市,4个直辖市geoCoord数据,用于echart gl 3d地图
    怎么利用 ChromeDriver 和 Selenium对 CEF应用进行自动化测试-python实现
    怎么利用 ChromeDriver 和 Selenium对 CEF应用进行自动化测试-java实现
    vs studio 2019 产品密匙
    Machine Learning (一)
    Css 基础(一)
    Echarts学习笔记
    Vue 进阶(实例训练)
    Vue框架
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5631798.html
Copyright © 2011-2022 走看看