FreeBSD打开DTrace支持
主要翻译自: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支持的更多相关文章
- SQL Server附加数据库提示“版本为661,无法打开,支持655版本……”
在我们使用别人导出的数据库的时候,有时候我们会通过附加数据库的方法,把别人导出的数据库附加到我们的电脑中,这时,或许你会遇到这种问题,附加时,提示版本为XXX,无法打开,支持AAA版本. 这是怎么回事 ...
- 转:SQL Server附加数据库提示“版本为661,无法打开,支持655版本……”
在我们使用别人导出的数据库的时候,有时候我们会通过附加数据库的方法,把别人导出的数据库附加到我们的电脑中,这时,或许你会遇到这种问题,附加时,提示版本为XXX,无法打开,支持AAA版本. 这是怎么回事 ...
- helm-mode打开文件支持中文搜索
helm-mode打开文件支持中文搜索 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #83949 ...
- FreeBSD 13 显卡支持
On FreeBSD 13, using drm-devel-kmod, support is the same as on Linux 5.4. This includes support for ...
- C# 打开钱箱支持北洋、佳博、爱普生
/// <summary> /// 执行开钱箱操作 /// 没钱箱或打印机原功能都可以正常使用 /// </summary> public void ExecuteOpenCa ...
- Linphone iOS客户端编译时打开G729支持
Assuming you were able to compile the SDK and the linphone XCode project, here is what you need to d ...
- 动态追踪技术(中) - Dtrace、SystemTap、火焰图
http://openresty.org/cn/presentations.html http://weibo.com/agentzh?is_all=1 http://openresty.org/po ...
- linux 内核分析工具 Dtrace、SystemTap、火焰图、crash等
<< System语言详解 >> 关于 SystemTap 的书. 我们在分析各种系统异常和故障的时候,通常会用到 pstack(jstack) /pldd/ lsof/ tc ...
- 选择 FreeBSD 而不是 Linux 的技术性原因4
Linux 二进制兼容性 FreeBSD 提供了与 Linux 的二进制兼容.这使得用户可以在 FreeBSD 系统上安装和运行许多 Linux 二进制文件, 而无需首先修改二进制文件.在某些特定情况 ...
随机推荐
- C 语言中用bsearch()实现查找操作
C语言中可以用bsearch()实现二分查找.同qsort()一样,bsearch()也包含在库中,且同样要自定义比较子函数.其原型如下: void *bsearch(const void *key, ...
- BQ24296充电管理芯片使用过程中的注意事项
BQ24296遇到的一点问题 概述:BQ24296是TI出品的具有窄范围VDC控制.基于I2C通讯的最大支持3A充电电流的开关式电源路径管理芯片.可以轻松实现2A以上的大电流充电,能量转换效率达到90 ...
- USB port 如何识别不同的Charger类型
基于Qualcom 8960/8921平台 一,软件分析 1. USB charger types & Power supply types USB_INVALID_CHARGER ...
- mongodb中的副本集搭建实践
准备运行1个主节点,2个从节点,从节点中其中是一个是仲裁节点(Arb). --oplogSize --oplogSize --oplogSize 其中application是副本集的名称,节点必须相同 ...
- 18.ssh远程双向无密码登陆
#ssh远程双向无密码登陆 需求:在192.168.10.100执行ssh 192.168.20.205不需要输入密码直接跳转到205机器 #在192.168.10.100执行命令,我这里使用root ...
- indexOf属性不支持
//此方法是数组的indexof属性不支持特此增加此段代码 if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(elt ...
- AngularJS 特性—SinglePage、template、Controller
单页Web应用(SinglePage) 顾名思义,只使用一个页面的Web应用程序.单页面应用是指用户通过浏览器加载独立的HTML页面,Ajax加载数据页面无刷新,实现操作各种操作. 模板(templa ...
- JDBC连接sql server数据库及其它
JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...
- Android Fragment是什么
Fragment是Activity中用户界面的一个行为或者一个部分.你可以在一个单独的Activity上把多个Fragment组合成一个多区域的UI,并且可以在多个Activity中使用.你可以认为F ...
- 临时文件相关的v$tempfile v$sort_usage与V$tempseg_usage
SQL> select username,user,segtype,segfile#,segblk#,extents,segrfno# from v$sort_usage; SEGFILE#代表 ...