Linuxデバッグツール備忘録
Linuxデバッグ(とか)ツール備忘録
Linuxでデバッグやトレース等を行うためのツールの使い方などのメモ。
strace
概要
プログラムのシステムコール発行を追跡するためのツール
sudo apt-get install sysstat
使い方
$ strace <options> -o <log file name> ./<execution target> $ strace <options> -o <log file name> python <execution target>
<options>
については以下。
-T
: マイクロ秒の精度で情報を取得-tt
: システムコール発行時の時刻をマイクロ秒単位で表示
nice | renice
概要
nice値(優先順位: max -20 ~ 19 min)を変更するためのツール
reniceは既に実行されているプロセスのnice値を変更するためのツール
使い方
$ nice -n <niceness> <command(exgrep "hoge")>
$ renice <diff niceness> <pid> $ renice <diff niceness> -u <user>
-u
を指定した場合は、そのユーザ権限で実行されている全プロセスが対象になる
sar
概要
CPU, メモリ, DISK IOなど様々な情報のモニタリングを行うためのツール
sudo apt-get install sysstat
使い方
$ sar <options> -o <log file name> <interval> <count> hh:mm:ss CPU %user %nice %system %iowait %steal %idle hh:mm:ss all 0.88 0.00 0.00 0.00 0.00 99.12 <snip>
<options>
については以下。
-f <file name>
: -oで吐き出したファイルを食わせる-P <ALL|CPU No.>
: CPU状況を見たい時-r
: メモリ使用量を見たい時-R
: メモリページの状況を見たい時-d
: ディスクIOの状況を見たい時-n <keyword>
: ネットワークの状況を見たい時。<keyword>
については以下。DEV
: インターフェースIP
: IPTCP
: TCP
-s hh:mm:ss -e HH:MM:SS
:hh:mm:ss
からHH:MM:SS
の情報を表示-u
:-o
をつけない場合つける
見方
CPU
%user
: ユーザモードでのCPU利用率%nice
: nice値を変更しているプロセスのCPU使用率%system
: カーネルモードでのCPU利用率%iowait
: IO待ちでのCPU使用率%steal
: ゲストOSが割り当ててもらえなかったCPU使用率%idle
: 待機中CPU使用率
参考
Qiita - Linux - sarコマンドについて @makaaso
stress
概要
負荷をかけるためのツール
sudo apt-get install stress
使い方
$ stress <options> -q -t <timeout sec> &
<options>
については以下
<N>
は全てワーカーの数
-c <N>
: CPUに負荷をかけたい時-i <N>
: ディスクIOに負荷をかけたい時-m <N>
: メモリに負荷をかけたい時
ldd
概要
リンクしているライブラリを調べるツール
使い方
$ ldd <program>
gdb
概要
デバッガ
使い方
$ gdb <object file>
上記実行後、コマンドの入力が求められる。
- 行にブレークポイントを張るとき:
b <src file>:<lines>
- 関数にブレークポイントを張るとき:
b <function name>
- ブレークポイント一覧表示:
i b
- ブレークポイント削除:
d <no>
- 変数にウォッチポイントを張る時:
w <var name>
- 実行するとき:
run
- ステップ実行するとき(関数スキップ):
n
- ステップ実行するとき(関数の中に入る):
s
- 変数の値を見たい時:
p <var name>
- 変数の値を変える時:
p <var name>=<value>
- 既に実行されているプロセスにアタッチするとき:
attach <pid>
- デタッチするとき:
detach
Ctrl-x
=> 1
or 2
でソースコードを見ながら実行できる。
参考
MEMWATCH
概要
メモリリーク・破壊監視ライブラリ
使い方
ソースコードに#include "memwatch.h"
を追加。
コンパイル時に、gccに-DMEMWATCH -DMW_STDIO memwatch.c
を渡す。
実行すると、メモリリーク等の報告が記載されたmemwatch.log
ファイルが吐き出される。
参考
readelf
概要
ELFバイナリを読むためのツール
使い方
$ readelf <options> <ELF file>
<options>
については以下。
-h
: 開始アドレス-S
: 開始アドレス、データとコードのファイル内オフセット、サイズ
taskset
概要
プロセスを指定したCPUで動作させるためのツール
使い方
$ taskset -c <CPU No.s> <command>` $ taskset -pc <CPU No.s> <pid>`
cat /proc/cpuinfo
概要
CPU情報が見れる
time
概要
実行時間を見るためのツール
使い方
$ time <command>
随時更新