51 查找多线程程序中的竞争数据。51 查找内存地址,那些被多于一条线程访问的内存
地址,但是没有使用一致的锁就会被查出。这表示这些地址在多线程间访问的时候没有进行同步,很可能
会引起很难查找的时序问题。
它主要用来检查多线程程序中出现的竞争问题。D寻找内存中被多个线程访问,
而又没有一贯加锁的区域,这些区域往往是线程之间失去同步的地方,而且会导致难以发
掘的错误。D 实现了名为” L[的竞争检测算法,并做了进一步改进,减少了报告
错误的次数。
massif
堆栈分析器,它能测量程序在堆栈中使用了多少内存,告诉我们堆块,堆管理块和栈
的大小。$! 能帮助我们减少内存的使用,在带有虚拟内存的现代系统中,它还能够加
速我们程序的运行,减少程序停留在交换区中的几率。
lackey
319 是一个示例程序,以其为模版可以创建你自己的工具。在程序结束后,它打印出一些基本的
关于程序执行统计数据。
2.2.2. 用法
常用选项,适用于所有 & 工具
&%%7?1:最常用的选项。运行 中名为 &%%1 的工具。默认 1513。
551 显示所有选项的帮助,包括内核和选定的工具两者。
511- 和51 相同,并且还能显示通常只有 @ 的开发人员使用的调试选项。
14%显示 内核的版本,每个工具都有各自的版本。
A BB1&安静地运行,只打印错误信息。
1-%41更详细的信息增加错误数统计。例如:共享对象加载,使用的重置,执行引擎和工具
的进程,异常行为的警告信息。重复这个标记可以增加详细的级别。
C 调试 @ 自身发出的信息。通常只有 @ 开发人员对此感兴趣。重复这个标记可以产
生更详细的输出。如果你希望发送一个 - 报告,通过 生成的输出会使你的报告更加有
效。
&1517%D914跟踪子线程E$%(
F &3+47%D914跟踪打开的文件描述?$%(当这个选项打开时,@ 会在退出时打印一
个打开文件描述符的列表。每个文件描述符都会打印出一个文件是在哪里打开的栈回溯,和任何与此
文件描述符相关的详细信息比如文件名或 4%31& 信息。
, &14&7%D914增加时间戳到 #" 信息E$%(当这个选项打开时,每条信息之前都有一个
从程序开始消逝的时间,用天,小时,分钟,秒和毫秒表示。
%+7?-1:输出 #" 到描述符文件 $74&1(指定 @ 把它所有的消息都输出到
一个指定的文件描述符中去。默认值 是标准错误输出4&1 。注意这可能会干扰到客户端自身
对 4&1 的使用@ 的输出与客户程序的输出将穿插在一起输出到 4&1。
%017?01:将输出的信息写入到 011;>= 的文件里,;>= 是运行程序的进行 >=
%011&97?01:输出 #" 信息到 01
%01B017?@GH:取得环境变量的值来做为输出信息的文件名。 $%1(
X %4%31&76%&输出 #" 到 4%31&,6%& 指定 @ 输出所有的消息到指
定的 >;,指定的端口。当使用 A,, 端口时,端口有可能被忽略。如果不能建立一个到指定端口的连