HouseMD, BTrace 보다 실 용적 인 자바 실행 진단 도구
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
를 통 해 pid
이 1234
라 고 가정 한 다음 에 집행 한다.
> housemd 1234
INFO
정보 후, 이때 HouseMD
의 Shell
프롬프트 에 들 어가 서 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.
:
-
quit
지령 - 입력
Ctrl + D
- 입력
Ctrl + C
흔 한 문제 풀이
여 기 를 클릭 하여 보기
명령 범례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$D
의 mD1
방법의 호출
여기 서 볼 수 있 듯 이 이 방법 이 호출 된 트리거 대상 은 실현 클래스 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 에서 사용 입문 을 제공 해 주 셔 서 감사합니다.) scala
, Groovy
, JRuby
, Jython
, kotlin
등.
0 , ->>
<<-
ITeye
- — !—
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.