Skip to content

デバッグのための道具

ldd

共有ライブラリへの依存関係を表示する

ldd <options> <executable>

出力例

ldd a.out
 linux-vdso.so.1 =>  (0x00007fff089ff000)
 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe74edb3000)
 /lib64/ld-linux-x86-64.so.2 (0x00007fe74f145000)

よく使うオプション

オプション 説明
-d 足りないオブジェクトを表示
-r 足りないオブジェクトと関数を表示
-u 未使用の依存関係を表示
-v 全ての情報を表示

lsof

ポート関連の調べ物に使う

リアルタイムに使われているポートを調べる

lsof -i

以下のように今まさに使われているポートがズラズラとストリーミングされる

COMMAND      PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
gnome-she   2295 hans   23u  IPv4 1089845      0t0  TCP hans:56408->20.27.177.116:https (ESTABLISHED)
aw-server   2840 hans    5u  IPv4   38127      0t0  TCP localhost:5600 (LISTEN)
aw-server   2840 hans    7u  IPv4   38127      0t0  TCP localhost:5600 (LISTEN)
jetbrains   3703 hans   58u  IPv6   44199      0t0  TCP localhost:52829 (LISTEN)
vivaldi-b   3780 hans  291u  IPv4   42488      0t0  UDP mdns.mcast.net:mdns 
Vivaldi-U   3860 hans   24u  IPv4 1079063      0t0  TCP hans:49604->lb-140-82-112-25-iad.github.com:https (ESTABLISHED)
Vivaldi-U   3860 hans   32u  IPv6  685513      0t0  UDP hans:52320->nrt20s20-in-x0a.1e100.net:https 
Vivaldi-U   3860 hans   37u  IPv6  839726      0t0  TCP hans:56294->tg-in-x6d.1e100.net:imaps (ESTABLISHED)

特定のポートを使っているプログラムを特定する

lsof -i:<ポート番号>

出力例

$ lsof -i:7400
COMMAND      PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
foxglove_ 158698 hans    5u  IPv4 983900      0t0  UDP *:7400