HouseMD, BTrace 보다 실 용적 인 자바 실행 진단 도구

9093 단어 자바BTracehousemd
HouseMD  매우 민첩 한 Java 프로 세 스 가 실 행 될 때의 진단 변조 명령 행 도구 로 안전 하고 효율 적 인 특징 을 가지 고 엄격 한 온라인 (생산) 환경 에서 사용 하기에 매우 적합 하 다.
특성
  • 대화 식 명령 행
  • 지원 Tab 자동 완성 또는 후보 목록 알림
  • 명령 기록 지원
  • 로 딩 클래스 보기
  • 추적 파일 원본 경로 지원
  • 추적 류 캐리어 차원 지원
  • 추적 방법
  • 지원 클래스 짧 은 이름 SimpleName 과 방법 명 (선택 가능) 한정 추적 목표
  • 추상 류 나 인터페이스 에 따라 실제 유형의 추적 목 표를 제한 하 는 것 을 지원 한다
  • 추적 목 표를 실시 간 으로 표시 하 는 요약 통 계 를 지원 합 니 다
  • 출력 추적 대상 호출 로그 파일 출력 지원
  • 출력 추적 대상 호출 스 택 파일 출력 지원
  • 환경 변수 와 속성 보기 Comming soon
  • 왜 있어 야 돼 HouseMD여 기 를 클릭 하여 보기
    BTrace 비교 하 다
  • 한 개 jar 가방 만 있 고 배치 가 간단 하 며 사용 이 간단 하 다
  • 스 크 립 트 를 작성 하지 않 고 명령 을 통 해 일반적인 진단 작업 을 완성 하 며 빠 르 고 효율 적 으로 전환 합 니 다
  • 명령 행 의 힌트 를 빌려 추적 할 목 표를 신속 하고 정확하게 찾 을 수 있다
  • 로 딩 류 의 정 보 를 볼 수 있 습 니 다. 이것 은 용기 의 응용 진단 장면 에서 매우 유용 합 니 다
  • 추적 제한 시간 과 횟수 제한 체 제 를 통 해 추적 과정 에 가 져 온 소 모 를 제어 한다
  • 용기 응용 에서 클래스 로 딩 문 제 를 자동 으로 감지 하고 해결 합 니 다
  • 자체 소스 코드 가 간단 하고 읽 기 쉽 고 파악 하기 쉬 우 며 맞 춤 형 확장 이 쉽다
  • 설치 하 다.
    빠 른 설치Linux 또는 Unix 시스템 에서 HouseMD 설치 할 경로 에서 (이 경 로 를 시스템 PATH 변수 에 추가 하 는 것 을 권장 합 니 다) 실행:
    > curl -Lk https://raw.github.com/zhongl/HouseMD/master/bin/install | bash
    
    HouseMD 현재 Windows 에 대해 지원 하지 않 습 니 다 (관련 문제). 필요 한 동지 가 코드 를 기여 하 기 를 기대 합 니 다!
    다운로드 설치
  • 여 기 를 클릭 하 세 요. 최신 버 전 다운로드
  • 실행 명령:
  • > java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar housemd-assembly-x.x.x.jar
    

    메모: Mac OSX 에서 옵션 -Xbootclasspath 은 필요 없습니다.
    입문 하 다
    시동 을 걸다
    가정 하 다.  빠 른 설치 및 설치 경 로 를 PATH 에 추가 다음 명령 행 에 입력:
          > housemd -h
    

    HouseMD 의 도움 정 보 는 다음 과 같다.

          Usage: housemd [OPTIONS] pid
        a runtime diagnosis tool of JVM.
    Options:
        -h, --help
            show help infomation of this command.
        -p, --port=[INT]
            set console local socket server port number.
            default: 54321
    Parameters:
        pid
            id of process to be diagnosing.
    

    , java 프로 세 스 의 ID jps 또는 ps 를 통 해 pid1234 라 고 가정 한 다음 에 집행 한다.

          > housemd 1234
    

    INFO 정보 후, 이때 HouseMDShell 프롬프트 에 들 어가 서 help 명령 을 입력 하면 지원 하 는 내장 명령 을 볼 수 있 습 니 다.

          housemd> help
    
    quit      terminate the process.
    help      display this infomation.
    trace     display or output infomation of method invocaton.
    loaded    display loaded classes information.
    

    help 다음 에 명령 의 이름 을 추가 하면 loaded 구체 적 인 명령 의 도움 정 보 를 표시 할 수 있다.

          housemd> help loaded
    Usage: loaded [OPTIONS] name
        display loaded classes information.
    Options:
        -h, --classloader-hierarchies
            display classloader hierarchies of loaded class.
    Parameters:
        name
            class name without package name.
    

    :

    1. quit 지령
    2. 입력 Ctrl + D
    3. 입력 Ctrl + C
    4. 흔 한 문제 풀이
      여 기 를 클릭 하여 보기
      명령 범례loaded
            housemd> loaded String
      java.lang.String -> /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/rt.jar
      

      java.lang.String 의 로드 경로

            housemd> loaded -h ScalaObject
      scala.ScalaObject -> /home/housemd/housemd.jar
          - com.github.zhongl.housemd.Duck$1@1e859c0
              - sun.misc.Launcher$AppClassLoader@1cde100
                  - sun.misc.Launcher$ExtClassLoader@16f0472
      

      scala.ScalaObject 의 로드 경로 와 클래스 로 더 차원.
      메모: BootClassLoader 는 Java 언어 가 구현 되 지 않 아 표시 되 지 않 습 니 다.trace

            housemd> trace -t 2 TraceTarget$A.m
      INFO : probe class TraceTarget$A
      TraceTarget$A.m(int, String)    TraceTarget$CL@42719c            0            -ms    null
      TraceTarget$A.m(String)         TraceTarget$CL@42719c            2            3ms    TraceTarget$A@401369
      
      TraceTarget$A.m(int, String)    TraceTarget$CL@42719c            0            -ms    null
      TraceTarget$A.m(String)         TraceTarget$CL@42719c            4            1ms    TraceTarget$A@401369
      
      INFO : Ended by timeout
      INFO : reset class TraceTarget$A
      

      2 TraceTarget$A.m 방법의 호출
      각 열의 의 미 는 다음 과 같다. 방법 전체 이름 (매개 변수 목록 포함), 현재 클래스 의 캐리어 대상, 총 호출 횟수, 평균 호출 시간, 호출 된 자신의 대상

            housemd> trace -l 4 TraceTarget$D+.mD1
      INFO : probe class TraceTarget$D
      TraceTarget$D.mD1(int)    TraceTarget$CL@42719c            2           <1ms    TraceTarget$B@80cac9
      
      INFO : Ended by overlimit
      INFO : reset class TraceTarget$D
      

      4 TraceTarget$DmD1 방법의 호출
      여기 서 볼 수 있 듯 이 이 방법 이 호출 된 트리거 대상 은 실현 클래스 TraceTarget$B 의 인 스 턴 스 입 니 다.

            housemd> trace -i 4 TraceTarget$D+
      INFO : probe class TraceTarget$D
      INFO : probe class TraceTarget$B
      TraceTarget$B.mC(String)       TraceTarget$CL@42719c            8           <1ms    TraceTarget$B@80cac9
      TraceTarget$B.mD2(int, int)    TraceTarget$CL@42719c            8           <1ms    TraceTarget$B@80cac9
      TraceTarget$D.mD1(int)         TraceTarget$CL@42719c            8           <1ms    TraceTarget$B@80cac9
      
      TraceTarget$B.mC(String)       TraceTarget$CL@42719c           16           <1ms    TraceTarget$B@80cac9
      TraceTarget$B.mD2(int, int)    TraceTarget$CL@42719c           16           <1ms    TraceTarget$B@80cac9
      TraceTarget$D.mD1(int)         TraceTarget$CL@42719c           16           <1ms    TraceTarget$B@80cac9
      
      INFO : Ended by timeout
      INFO : reset class TraceTarget$D
      INFO : reset class TraceTarget$B
      

      TraceTarget$D 모든 방법의 호출 은 4 초 에 한 번 씩 실시 간 요약 을 설정 하여 기본 종료 조건 이 달성 될 때 까지 합 니 다.

            housemd> trace -d TraceTarget.addOne TraceTarget$A
      ......
      

      TraceTarget.addOne 방법 과  TraceTarget$A 의 모든 방법 을 호출 하고 상세 로 그 를 파일 로 출력 합 니 다.
      파일 의 경로, 통과 하 십시오 help trace 옵션 설명 보기 -d출력 한 detail 파일 내용:

            2012-06-14 14:38:29 8ms [main] null TraceTarget.addOne [0] 1
      2012-06-14 14:38:29 2ms [main] TraceTarget$A@995a79 TraceTarget$A.m [123] void
      2012-06-14 14:38:30 0ms [main] null TraceTarget.addOne [0] 1
      2012-06-14 14:38:30 0ms [main] TraceTarget$A@995a79 TraceTarget$A.m [123] void
      

      , : , , , , , , , ( )

            housemd> trace -s TraceTarget.addOne
      ......
      

      TraceTarget.addOne 방법 을 사용 하여 스 택 을 파일 로 출력 합 니 다.
      파일 의 경로, 통과 하 십시오 help trace 옵션 설명 보기 -s출력 한 stack 파일 내용:

            TraceTarget.addOne(Integer) call by thread [main]
          TraceTarget.main(TraceTarget.java:42)
      

      ,

      , ,

      , , .

       

      HouseMD 는 바이트 코드 기술 을 바탕 으로 하 는 진단 도구 이기 때문에 Java 의외 의 경 우 를 제외 하고 최종 적 으로 바이트 코드 형식 으로 JVM 이상 의 언어 를 운행 한다.  HouseMD 이들 에 대한 진단 을 지원 합 니 다. 예 를 들 어 Clojure (@ Killme 2008 에서 사용 입문 을 제공 해 주 셔 서 감사합니다.)  scalaGroovyJRubyJythonkotlin 등.
       

      0 , ->> <<-


      ITeye

      • — !—



    좋은 웹페이지 즐겨찾기