gpt4 book ai didi

mysql - 使用 SystemTap 跟踪 mysqld

转载 作者:行者123 更新时间:2023-11-29 02:27:54 26 4
gpt4 key购买 nike

我想用systemtap来追踪MySQL。
问题是,在配置和构建 MySQL 并启动服务器后,我无法获取服务器中存在的标记信息:

[root@localhost]$ stap -l 'process("/home/mysql/mysql5.5.33/bin/mysqld").mark("*")'
[root@localhost]$ (无输出)

我的环境如下:

1 stap version
$ stap --version
Systemtap translator/driver (version 1.7/0.152 non-git sources)
Copyright (C) 2005-2012 Red Hat, Inc. and others
This is free software; see the source for copying conditions.
enabled features: AVAHI LIBRPM LIBSQLITE3 NSS BOOST_SHARED_PTR TR1_UNORDERED_MAP NLS

2 我使用脚本配置 MySQL 如下:

cmake \
-DCMAKE_INSTALL_PREFIX=/home/mysql/mysql5.6.12 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_DTRACE=1 \
-DWITH_DEBUG=1 \

顺便说一句:我可以获得函数输出
[root@localhost] stap -L 'process("/home/mysql/mysql5.6.12/bin/mysqld").function("main")'
process("/home/mysql/mysql5.6.12/bin/mysqld").function("main@/home/mysql/mysql-5.6.12/sql/main.cc:23") $argc:int $argv:char**

readelf -n/home/mysql/mysql5.6.12/bin/mysqld
`偏移量为 0x0000021c 且长度为 0x00000020 的注释:
所有者 数据大小 说明
GNU 0x00000010 NT_GNU_ABI_TAG(ABI 版本标签)

偏移量为 0x0000023c 且长度为 0x00000024 的注释:
所有者 数据大小 说明
GNU 0x00000014 NT_GNU_BUILD_ID(唯一构建 ID 位串)`

最佳答案

似乎 mysql 的 -DENABLED_DTRACE=1 位不足以在 sys/sdt.h 工具中实际编译。如果他们这样做了,您就会在 readelf 中看到额外的数据。您可以尝试查看 mysql 构建树中的各个 .o 文件。例如,Fedora 19 的 mariadb-server 包确实有标记:

% stap -L 'process("/usr/libexec/mysqld").mark("*")'
process("/usr/libexec/mysqld").mark("command__done") $arg1:long
...54 lines omitted...
process("/usr/libexec/mysqld").mark("update__start") $arg1:long

它配置了 -DENABLE_DTRACE=ON。也许你的只是 -DENABLED_DTRACE 与 -DENABLE_DTRACE 的拼写错误?

关于mysql - 使用 SystemTap 跟踪 mysqld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18185688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com