dtrace:无法编译脚本探测器描述pid29441 :: * Slave_open_temp_tables *:return与任何探测器都不匹配?

时间:2013-07-04 09:32:13

标签: mysql dtrace

由于this问题,我将使用dtrace来查看从属SQL线程对临时表的操作是否遵循this指南。

这是我的剧本:

#!/usr/sbin/dtrace -s

#pragma D option quiet
dtrace:::BEGIN
{
    printf("Tracing... Hit Ctrl-C to end.\n");
}

pid$target::*mysql_parse*:entry
{
    self->query = copyinstr(arg1);
}

pid$target::*Slave_open_temp_tables*:return
{
    @query[self->query] = count();
}

这就是我在跑步时得到的:

# ./Slave_open_temp_tables.d -p `pgrep -x mysqld`
proc-stub:rd_event_enable
proc-stub:rd_errstr err=26
dtrace: failed to compile script ./Slave_open_temp_tables.d: line 14: probe description pid29441::*Slave_open_temp_tables*:return does not match any probes
User defined signal 1

我也试过create_myisam_tmp_table,但结果相同。

我哪里做错了?

1 个答案:

答案 0 :(得分:0)

我没有安装MySQL来寻找你,但-l的{​​{1}}选项会告诉你哪些探测器可用,你应该从中找出你是什么做错了。

dtrace

或者尝试使用不太具体的名称,例如$ dtrace -ln 'pid$target::*Slave_open_temp_tables*:return' -p `pgrep -x mysqld` *open_temp_tables*甚至*tables*来获取更广泛的结果......可能是该功能不再存在由于MySQL源代码的变化,在目标进程中。

另外,我假设您已检查*的输出以确保它是有效的输入pid?