Отслеживание mysqld с помощью SystemTap

Я хочу использовать 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 (уникальная битовая строка идентификатора сборки)`


person orain    schedule 12.08.2013    source источник
comment
Включает ли readelf -n /home/mysql/mysql5.6.12/bin/mysqld некоторые биты NT_STAPSDT?   -  person fche    schedule 14.08.2013
comment
readelf -n /home/mysql/mysql5.6.12/bin/mysqld Notes at offset 0x0000021c with length 0x00000020: Owner Data size Description GNU 0x00000010 NT_GNU_ABI_TAG (тег версии ABI) Notes at offset 0x0000023c with length 0x00000024: Owner Data size Description GNU 0x00000024: Owner Data size Description GNU 0x00000024: Owner Data size Description GNU 0x00000010 (уникальная битовая строка идентификатора сборки)`   -  person orain    schedule 15.08.2013


Ответы (1)


Кажется, что битов -DENABLED_DTRACE=1 для mysql было недостаточно для фактической компиляции в инструментарии sys/sdt.h. Если бы они это сделали, вы бы увидели дополнительные данные в readelf. Вы можете попробовать просмотреть отдельные файлы .o в дереве сборки mysql. Например, в пакете mariadb-server для Fedora 19 есть маркеры:

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

person fche    schedule 16.08.2013