2013-08-12 41 views
2

我想使用systemtap來跟蹤MySQL。
問題是,在配置和建立後MySQL和我啓動服務器,我不能讓這些標記信息存在於服務器:
跟蹤mysqld使用SystemTap

[[email protected]]$ stap -l 'process("/home/mysql/mysql5.5.33/bin/mysqld").mark("*")'
[[email protected]]$(無輸出中)

我ENV如下:

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 \ 

BTW:我可以得到函數的輸出
[[email protected]] stap -L 'process("/home/mysql/mysql5.6.12/bin/mysqld").function("main")'
process("/home/mysql/mysql5.6.12/bin/mysqld").function("[email protected]/home/mysql/mysql-5.6.12/sql/main.cc:23") $argc:int $argv:char**

readelf -n /home/mysql/mysql5.6.12/bin/mysqld
`在長度爲0x00000020偏移0x0000021c注意事項:
所有者數據大小說明
GNU 0x00000010 NT_GNU_ABI_TAG(ABI版本標記)

在偏移0x0000023c

注意到長度0x00000024:
所有者數據大小說明
GNU 0x00000014 NT_GNU_BUILD_ID(獨特構建標識位串)`

+0

「readelf -n /home/mysql/mysql5.6.12/bin/mysqld」是否包含一些NT_STAPSDT位? – fche

+0

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位串)' – orain

回答

2

似乎MySQL的-DENABLED_DTRACE = 1位不足以實際編譯在sys/sdt.h工具。如果他們這樣做了,你會在readelf中看到額外的數據。您可以嘗試查看mysql構建樹中的單個.o文件。例如,19的Fedora的MariaDB的服務器包確實有標記:

% 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錯字?

+0

thx,我將嘗試:-) – orain