torutkのブログ

ソフトウェア・エンジニアのブログ

BTrace最初の一歩(続)

id:torutk:20100930 で紹介したbtraceを使っていると、

$ btrace 9876 TraceMethods.java
Port 2020 unavailable.
$

とエラーで実行できないことがありました。

まず、ポート番号2020は、BTraceでトレース対象となるプロセスとBTraceクライアントとの間で使用される通信のポート番号デフォルト値です。

今回、最初にbtraceコマンドであるプロセスに接続した後、別なプロセスにbtraceコマンドで接続しようとしたら上述のエラーが生じました。

btraceコマンドには-pオプションでポート番号を指定できるので、デフォルトの2020を使用した後は、-pオプションで未使用のポート番号を指定します。

$ btrace -p 2021 9876 TraceMethods.java

ポート番号の使用有無と使用プロセスの特定

Windows 7では、netstatコマンドの-oオプションで、ポート番号を使用しているプロセスのプロセスIDが調査できます。

これを使うと、ポート番号2020は最初に使用したbtraceコマンドの接続先(トレース対象)プロセスが該当することが判明しました。

Linuxでは、lsofコマンドでポート番号を使用しているプロセスを調査できるようです。