本节显示可与 er_print -filters 命令一起使用以及可在 "Advanced Custom Filter"(高级定制过滤器)对话框中使用的过滤器表达式的示例。
对于 er_print -filters 命令,过滤器表达式用单引号括起来,类似以下示例:
er_print -filters 'FNAME("myfunc") SOME IN USTACK' -functions test.1.er示例 5-1 按名称和堆栈过滤函数
从用户函数堆栈过滤名为 myfunc 的函数:
FNAME("myfunc") SOME IN USTACK
示例 5-2 按线程和 CPU 过滤事件当线程 1 仅在 CPU 2 上运行时,要查看线程 1 中的事件,请使用:
THRID == 1 && CPUID == 2
示例 5-3 按索引对象过滤事件如果将索引对象 THRCPU 定义为 "CPUID<<16|THRID ",下面的过滤器与上述当线程 1 仅在 CPU 2 上运行时查看线程 1 中事件的过滤器等效:
THRCPU == 0x10002
示例 5-4 过滤指定时间段发生的事件过滤介于第 5 秒和第 9 秒之间的时间段中发生的实验 2 的事件:
EXPID==2 && TSTAMP >= 5000000000 && TSTAMP < 9000000000
示例 5-5 过滤来自特定 Java 类的事件过滤堆栈中具有特定 Java 类的任何方法的事件(在用户查看模式下):
FNAME("myClass.*") SOME IN USTACK
示例 5-6 按内部函数 ID 和调用序列过滤事件已知函数 ID(如性能分析器中所示)时,过滤包含计算机调用堆栈中特定调用序列的事件:
(314,272) ORDERED IN MSTACK
示例 5-7 按状态或持续时间过滤事件如果 describe 命令列出时钟分析实验的以下属性:
MSTATE UINT32 Thread state NTICK UINT32 Duration
可以使用以下过滤器选择处于特定状态的事件:
MSTATE == 1
或者,可以使用以下过滤器选择处于特定状态且其持续时间比 1 个时钟周期长的事件:
MSTATE == 1 && NTICK > 1