BTrace使用

    以前一直在用Eclipse來設置斷點調試程序。遠程調試能夠在應用程序的運行參數裏面加上下面參數:java

JAVA_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9010"

    應用程序啓動的時候會打開一個端口,而後用Eclipse連上以後,就能夠在eclipse裏面設斷點調試了。eclipse

    下面要說的是用BTrace來調試。用BTrace調試不用重啓系統,只須要把btrace的腳本運行起來就能夠了:socket

import static com.sun.btrace.BTraceUtils.*;
import com.sun.btrace.annotations.*;

 

@BTrace  public class TraceMethod{
   @OnMethod(
      clazz="com.example.Server",
      method="getServerId",
      location=@Location(Kind.RETURN)
   )
   public static void traceExecute(@Self  com.example.Server instance, String requestId, @Return  String result){
     println("call Server.getRequestId");
     println(strcat("requestId is:",str(requestId)));
     println(strcat("type is:",str(get(field("com.example.Server","timeStamp"),instance))));
     println(strcat("return value is:",str(result)));
   }
}

 

這個腳本程序啓動後能夠動態的監控Server類裏面的getServerId方法的入口參數requestId;Server的成員變量timeStamp;getServerId方法的返回值。ui

     運行的命令:debug

     btrace -cp "/example/server.jar:/btrace/build" 25045 TraceMethod.java調試

相關文章
相關標籤/搜索