DTrace + debian7 を諦めた話

  • 投稿者:
  • 投稿カテゴリー:DTrace

DTraceとは

DTrace(ダイナミックトレース)とはサン・マイクロシステムズが開発しSolaris 10およびOpenSolaris、Mac OS X、FreeBSDに搭載されているシステム情報取得機能
DTraceを使用することにより、システム、アプリケーションに手を加えることなく、動的なトレースができる
ユーザプロセスだけでなくカーネル内部まで追跡でき、非常に負荷が低いため本番環境でも利用可能
上記のOS以外については、”dtrace for linux”を利用してカーネルに組み込むことが可能

DTraceもどきインストール方法

Solarisの dtraceとは異なり、できることが限られる

root@hostname:/home/admin# aptitude install systemtap-sdt-dev
以下の新規パッケージがインストールされます:
  systemtap-sdt-dev

root@hostname:/home/admin# dtrace
Usage /usr/bin/dtrace [--help] [-h | -G] [-C [-I<Path>]] -s File.d [-o <File>]

DTraceインストール方法 -結局インストールできず-

http://www.blackpig.jp/?p=247
http://liberumvir.com/2012/06/01/zfs-and-dtrace-running-on-ubuntu.html
を参考にdebian7にDTraceをインストールしようとしたが、できなかった
READMEにArchLinux・Ubuntu・RedHat/Fedoraでできそうなことは確認したが、debianの文字はなく、ネットにて有力な情報も見つけられなかった

ここ(公式サイト含め)からダウンロードしろという情報がいくつかあるが、現在(2014/9/4)ホスト名が名前解決できない状態
ftp://crisp.dyndns-server.com/pub/release/website/dtrace

一応ログとしてあがいた記録を残しておく

root@hostname:/home/admin# aptitude install git
以下の新規パッケージがインストールされます:
  git git-man{a} less{a} liberror-perl{a} patch{a}

root@hostname:/home/admin# cd /usr/local/src/
root@hostname:/usr/local/src# git clone git://github.com/ShepBook/dtrace-for-linux.git
root@hostname:/usr/local/src# cd dtrace-for-linux/

root@hostname:/usr/local/src/dtrace-for-linux# aptitude install build-essential
以下の新規パッケージがインストールされます:
  binutils{a} build-essential cpp{a} cpp-4.7{a} dpkg-dev{a} fakeroot{a} g++{a} g++-4.7{a} gcc{a} gcc-4.7{a} libalgorithm-diff-perl{a} libalgorithm-diff-xs-perl{a} libalgorithm-merge-perl{a} libc-dev-bin{a}
  libc6-dev{a} libdpkg-perl{a} libfile-fcntllock-perl{a} libgmp10{a} libgomp1{a} libitm1{a} libmpc2{a} libmpfr4{a} libquadmath0{a} libstdc++6-4.7-dev{a} libtimedate-perl{a} linux-libc-dev{a} make{a} manpages-dev{a}
更新: 0 個、新規インストール: 28 個、削除: 0 個、保留: 0 個。

root@hostname:/usr/local/src/dtrace-for-linux# aptitude install zlib1g-dev bison libc6-dev libelf-dev libdwaf-dev
名前か説明が "libdwaf-dev" にマッチするパッケージは見つかりませんでした
名前か説明が "libdwaf-dev" にマッチするパッケージは見つかりませんでした
以下の新規パッケージがインストールされます:
  bison libbison-dev{a} libelf-dev libelf1{a} m4{a} zlib1g-dev
更新: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。

root@hostname:/usr/local/src/dtrace-for-linux# aptitude install libdwarf-dev
以下の新規パッケージがインストールされます:
  libdwarf-dev
更新: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
root@hostname:/usr/local/src/dtrace-for-linux# make all

BUILD_DIR=build-3.2.0-4-amd64 tools/build.pl build-3.2.0-4-amd64 `uname -m`
Sorry - but I cannot find flex on your system.
You may need to install more packages. See tools/get-deps.pl, or
tools/get-deps-fedora.pl which can automate package installation.
Continue ? [y/n] n
make: *** [all] エラー 1

root@hostname:/usr/local/src/dtrace-for-linux# aptitude install flex
以下の新規パッケージがインストールされます:
  flex
更新: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。

root@hostname:/usr/local/src/dtrace-for-linux# make all
BUILD_DIR=build-3.2.0-4-amd64 tools/build.pl build-3.2.0-4-amd64 `uname -m`
tools/check_dep.pl
tools/mkport.pl
/usr/bin/ld: cannot find -lbfd
collect2: error: ld returned 1 exit status
grep: /usr/src/kernels/3.2.0-4-amd64/include/linux/fs.h: No such file or directory
tools/libgcc.pl
/usr/lib/gcc/x86_64-linux-gnu/4.7
tools/mksyscall.pl
mksyscall.pl: [x86] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
mksyscall.pl: [x86-64] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
make all0
cd tests ; make --no-print-directory
case `uname -m` in \
          x86_64) \
                cc -m64 -g -o ../build-3.2.0-4-amd64/sys64 syscalls.c ; \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
          i686) \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
        esac
In file included from /usr/include/stdio.h:28:0,
                 from syscalls.c:7:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
make[2]: *** [all] Error 1
make[1]: *** [do_cmds] Error 2
tools/bug.sh
======================
== Sorry - but dtrace failed to compile on your system.
== Please forward the following file to:
==
== file: /tmp/dtrace-bug.19203.txt
== mail: Crisp.Editor@gmail.com
== mail: dtrace@crisp.demon.co.uk
==
== and the information provided will be used to help
== enhance the tool and fix the underlying issue.
==
== Latest news and blog updates on dtrace available here. Please
== check for latest problem reports.
==
== http://crtags.blogspot.com
== http://www.crisp.demon.co.uk/blog/
==
== Latest downloads available from here:
==
== ftp://crisp.dyndns-server.com/pub/release/website/dtrace
== ======================
(generating a make run - this may take a few moments...)
make: *** [all] エラー 1

root@hostname:/usr/local/src/dtrace-for-linux# aptitude install binutils-dev zlib1g-dev flex bison elfutils libdwarf-dev libelf-dev libc6-dev libc-dev zlib1g-dev linux-libc-dev
以下の新規パッケージがインストールされます:
  binutils-dev elfutils libasm1{a} libdw1{a}
更新: 0 個、新規インストール: 4 個、削除: 0 個、保留: 0 個。

root@hostname:/usr/local/src/dtrace-for-linux# make all
BUILD_DIR=build-3.2.0-4-amd64 tools/build.pl build-3.2.0-4-amd64 `uname -m`
tools/check_dep.pl
tools/mkport.pl
grep: /usr/src/kernels/3.2.0-4-amd64/include/linux/fs.h: No such file or directory
tools/libgcc.pl
tools/mksyscall.pl
mksyscall.pl: [x86] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
mksyscall.pl: [x86-64] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
make all0
cd tests ; make --no-print-directory
case `uname -m` in \
          x86_64) \
                cc -m64 -g -o ../build-3.2.0-4-amd64/sys64 syscalls.c ; \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
          i686) \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
        esac
In file included from /usr/include/stdio.h:28:0,
                 from syscalls.c:7:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
make[2]: *** [all] Error 1
make[1]: *** [do_cmds] Error 2
tools/bug.sh
make: *** [all] エラー 1

###### 方法変更、READMEにtarやzipファイルが記載されていたため、そちらでやってみることに ######
root@hostname:/usr/local/src# wget -d http://dl.dropbox.com/u/45405441/dtrace-latest.tar.gz
DEBUG output created by Wget 1.13.4 on linux-gnu.
(中略)
2014-09-04 13:31:10 エラー 404: Not Found。

root@hostname:/usr/local/src# wget -d https://github.com/dtrace4linux/linux/archive/master.zip
root@hostname:/usr/local/src# unzip master.zip
root@hostname:/usr/local/src# cd linux-master
root@hostname:/usr/local/src/linux-master# make all
BUILD_DIR=build-3.2.0-4-amd64 tools/build.pl build-3.2.0-4-amd64 `uname -m`
tools/check_dep.pl
tools/mkport.pl
/usr/bin/ld: cannot find -ldw
collect2: error: ld returned 1 exit status
grep: /usr/src/kernels/3.2.0-4-amd64/include/linux/fs.h: No such file or directory
Generating: build-3.2.0-4-amd64/port.h
tools/libgcc.pl
/usr/lib/gcc/x86_64-linux-gnu/4.7
tools/mksyscall.pl
mksyscall.pl: [x86] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
mksyscall.pl: [x86-64] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
make all0
cd tests ; make --no-print-directory
case `uname -m` in \
          x86_64) \
                cc -m64 -g -o ../build-3.2.0-4-amd64/sys64 syscalls.c ; \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c || true ; \
                ;; \
          i686) \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
          arm*) \
                cc -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
        esac
In file included from /usr/include/stdio.h:28:0,
                 from syscalls.c:7:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
cd libctf ; make --no-print-directory
gcc -g   -I../common -I../common/ctf -I../uts/common/ -I../common/ctf -I. -I../linux -DCTF_OLD_VERSIONS  -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64  -c -o ctf_lib.o ctf_lib.c
In file included from ../linux/sys/types.h:4:0,
                 from ctf_lib.c:29:
../linux/linux_types.h:142:38: fatal error: /usr/include/sys/types.h: No such file or directory
compilation terminated.
make[2]: *** [ctf_lib.o] Error 1
make[1]: *** [do_cmds] Error 2
tools/bug.sh
======================
== Sorry - but dtrace failed to compile on your system.
== Please forward the following file to:
==
== file: /tmp/dtrace-bug.19526.txt
== mail: Crisp.Editor@gmail.com
==
== and the information provided will be used to help
== enhance the tool and fix the underlying issue.
==
== Latest news and blog updates on dtrace available here. Please
== check for latest problem reports.
==
== http://crtags.blogspot.com
== http://www.crisp.demon.co.uk/blog/
==
== Latest downloads available from here:
==
== ftp://crisp.dyndns-server.com/pub/release/website/dtrace
== ======================
==
== Common problems:
== 1. Run tools/get-deps.pl or get-deps-fedora.sh or get-deps-arch.sh
==    to ensure everything is needed or a build.
== 2. Currently (Nov 2012) issues on Xen guests (Amazon EC2). Working
==    to fix.
(generating a make run - this may take a few moments...)
make: *** [all] エラー 1

root@hostname:/usr/local/src/linux-master# aptitude search libdw
p   libdw-dev                                                                                              - libdw1 development libraries and header files
i A libdw1                                                                                                 - library that provides access to the DWARF debug information
i   libdwarf-dev                                                                                           - library to consume and produce DWARF debug information
root@hostname:/usr/local/src/linux-master# aptitude install libdw-dev
以下の新規パッケージがインストールされます:
  libdw-dev
更新: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
151 k バイトのアーカイブを取得する必要があります。展開後に 629 k バイトのディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
 libdwarf-dev : 競合: libdw-dev [0.152-1+wheezy1 がインストール予定となっています]
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージを削除する:
1)     libdwarf-dev



この解決方法を受け入れますか? [Y/n/q/?]y
以下の新規パッケージがインストールされます:
  libdw-dev
以下のパッケージが削除されます:
  libdwarf-dev{a}
更新: 0 個、新規インストール: 1 個、削除: 1 個、保留: 0 個。
151 k バイトのアーカイブを取得する必要があります。展開後に 552 k バイトのディスク領域が解放されます。
先に進みますか? [Y/n/?] y

root@hostname:/usr/local/src/linux-master# make all
BUILD_DIR=build-3.2.0-4-amd64 tools/build.pl build-3.2.0-4-amd64 `uname -m`
tools/check_dep.pl
tools/mkport.pl
grep: /usr/src/kernels/3.2.0-4-amd64/include/linux/fs.h: No such file or directory
Generating: build-3.2.0-4-amd64/port.h
tools/libgcc.pl
tools/mksyscall.pl
mksyscall.pl: [x86] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
mksyscall.pl: [x86-64] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
make all0
cd tests ; make --no-print-directory
case `uname -m` in \
          x86_64) \
                cc -m64 -g -o ../build-3.2.0-4-amd64/sys64 syscalls.c ; \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c || true ; \
                ;; \
          i686) \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
          arm*) \
                cc -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
        esac
In file included from /usr/include/stdio.h:28:0,
                 from syscalls.c:7:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
cd libctf ; make --no-print-directory
gcc -g   -I../common -I../common/ctf -I../uts/common/ -I../common/ctf -I. -I../linux -DCTF_OLD_VERSIONS  -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64  -c -o ctf_lib.o ctf_lib.c
In file included from ../linux/sys/types.h:4:0,
                 from ctf_lib.c:29:
../linux/linux_types.h:142:38: fatal error: /usr/include/sys/types.h: No such file or directory
compilation terminated.
make[2]: *** [ctf_lib.o] Error 1
make[1]: *** [do_cmds] Error 2
tools/bug.sh
make: *** [all] エラー 1

root@hostname:/usr# find / -name "fs.h"
/usr/include/linux/fs.h
root@hostname:/usr# cd src/
root@hostname:/usr/src# ls
root@hostname:/usr/src# mkdir -p kernels/3.2.0-4-amd64/
root@hostname:/usr/src# cd kernels/3.2.0-4-amd64/
root@hostname:/usr/src/kernels/3.2.0-4-amd64# ln -s /usr/include
root@hostname:/usr/src/kernels/3.2.0-4-amd64# cd /usr/local/src/linux-master/
root@hostname:/usr/local/src/linux-master# make all
BUILD_DIR=build-3.2.0-4-amd64 tools/build.pl build-3.2.0-4-amd64 `uname -m`
tools/check_dep.pl
tools/mkport.pl
tools/libgcc.pl
tools/mksyscall.pl
mksyscall.pl: [x86] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
mksyscall.pl: [x86-64] Unable to generate syscall table, syscall_count==0, which looks
suspiciously too low. Might have misparsed the sys_call_table
make all0
cd tests ; make --no-print-directory
case `uname -m` in \
          x86_64) \
                cc -m64 -g -o ../build-3.2.0-4-amd64/sys64 syscalls.c ; \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c || true ; \
                ;; \
          i686) \
                cc -m32 -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
          arm*) \
                cc -g -o ../build-3.2.0-4-amd64/sys32 syscalls.c ; \
                ;; \
        esac
In file included from /usr/include/stdio.h:28:0,
                 from syscalls.c:7:
/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
compilation terminated.
cd libctf ; make --no-print-directory
gcc -g   -I../common -I../common/ctf -I../uts/common/ -I../common/ctf -I. -I../linux -DCTF_OLD_VERSIONS  -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64  -c -o ctf_lib.o ctf_lib.c
In file included from ../linux/sys/types.h:4:0,
                 from ctf_lib.c:29:
../linux/linux_types.h:142:38: fatal error: /usr/include/sys/types.h: No such file or directory
compilation terminated.
make[2]: *** [ctf_lib.o] Error 1
make[1]: *** [do_cmds] Error 2
tools/bug.sh
make: *** [all] エラー 1

参考

Dtraceインストール方法
http://askubuntu.com/questions/60940/how-do-i-install-dtrace
makeで「/usr/bin/ld: cannot find」と表示されるときは「-l」に続くライブラリをインストールすれば解消する
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a115makeerror.html
DTraceの簡単な使い方
http://d.hatena.ne.jp/amachang/20080401/1207037832
仕組み
http://www.itmedia.co.jp/enterprise/articles/0504/22/news030.html