3

btraceを使用してアプリケーションをプロファイリングしていますが、制限に直面しています。current の名前を取得しようとしていますjava.lang.Thread。通常は呼び出すことができますgetName()が、btrace スクリプトでは禁止されています (すべての呼び出しは例外ですBTraceUtils)。
から文字列を取得する方法はありますchar[]か?

元のタスクは、スレッドの名前に部分文字列が含まれているかどうかを確認してから、トレース情報をログアウトします (出力を減らします)。

4

2 に答える 2

3

他の人に役立つ情報:

https://btrace.dev.java.net/source/browse/btrace/docs/usersguide.html?rev=1.7

特に、BTrace クラス

  • 新しいオブジェクトを作成できません。
  • 新しいアレイを作成できません。
  • 例外をスローできません。
  • 例外をキャッチできません。
  • 任意のインスタンスまたは静的メソッドを呼び出すことはできません。com.sun.btrace.BTraceUtils クラスの public static メソッドのみを BTrace プログラムから呼び出すことができます。
  • ターゲット プログラムのクラスおよびオブジェクトの静的フィールドまたはインスタンス フィールドに割り当てることはできません。ただし、BTrace クラスは独自の静的フィールドに割り当てることができます (「トレース状態」は変更できます)。
  • インスタンス フィールドとメソッドを持つことはできません。BTrace クラスでは、 static public void を返すメソッドのみが許可されます。また、すべてのフィールドは静的でなければなりません。
  • 外部、内部、ネストされた、またはローカル クラスを持つことはできません。
  • 同期ブロックまたは同期メソッドを持つことはできません。
  • ループを持つことはできません (for、while、do..while)
  • 任意のクラスを拡張できません (スーパークラスは java.lang.Object でなければなりません)
  • インターフェイスを実装できません。
  • assert ステートメントを含めることはできません。
  • クラスリテラルは使用できません。

http://btrace.kenai.com/javadoc/1.1/com/sun/btrace/BTraceUtils.html

于 2010-06-16T16:33:50.317 に答える
1

BTraceUtilsの「組み込み」関数名 (スレッド)を使用するだけです。引数として取る型の 1 つは Thread で、スレッドの名前を返します。また、スレッドの ID を返すthreadId(thread)関数もあります。

BTraceUtilsクラスには多くの便利な機能があります。オンラインのjavadocを参照してください。

乾杯、

JB

于 2010-06-17T06:05:40.767 に答える