mysql - dtrace: 编译脚本探测描述失败 pid29441::*Slave_open_temp_tables*:return 不匹配任何探测器?

标签 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 但得到了相同的结果。

我哪里做错了?

最佳答案

我没有安装 MySQL 来寻找你,但是 dtrace-l 选项会告诉你有哪些可用的探测,你应该能够弄清楚你做错了什么。

$ dtrace -ln 'pid$target::*Slave_open_temp_tables*:return' -p `pgrep -x mysqld`

或者尝试使用不太具体的名称,例如 *open_temp_tables**tables* 甚至 * 以获得更广泛的集合结果...可能是因为MySQL源代码的变化,该函数不再存在于你的目标进程中。

此外,我假设您已经检查了 pgrep -x mysqld 的输出以确保它是一个有效的输入 pid?

关于mysql - dtrace: 编译脚本探测描述失败 pid29441::*Slave_open_temp_tables*:return 不匹配任何探测器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17466784/

相关文章:

mysql - 修改mysql时间

php - 从 php 插入时如何向记录添加文本?

php - 每次单击图像 (<a>) 时,在 mysql 表中更新分数 (+1)。使用 PHP

node.js - macOS & dyld : Symbol not found: _usdt_create_provider

macos - Mac OS X : What is making my system slow RIGHT NOW?

使用 Dtrace 进行 Node.js 分析时不显示函数名称

java - JPA 标准 API : Aggregating on Multiple Columns with IF Condition

php登录错误 密码或用户名错误

ruby - Ruby 2.0 中新的 Tracepoint API 是否使用与 dtrace 相同的探测器?

linux - 了解 dtruss 的输出