문제

나는 (Java World에서) 무언가 존재하는지 궁금해했다.

  • 예외가 발생하는 동안 그렇게하십시오.
  • 로컬 변수, 방법의 인수 등을 캡처하십시오.
  • 소스 코드의 상황을 추출하거나 재현하는 데 사용할 수있는 편리한 파일에 넣으십시오.

두 가지 첫 번째 기능이 필요합니다 (세 번째 기능은 굉장합니다). 그리고 생산 사용에 적합해야합니다 (따라서 디버거에 대한 방법은 없습니다).

이것을 묻기 전에 나는 www (가능한 한 오래)를 검색했고 몇 가지 포인터를 찾았습니다.

  • 케이준 인터셉터: 말했듯이 dzone 게시물, 그것은 세 가지 요구 사항을 충족시키는 수동 JVM 에이전트입니다! 그러나 그것은 두 개의 단점이 있습니다. 당신은 그것을 지불해야하고 사이트는 다운되었습니다 (아마도 아무것도 지불 할 기회가 없을 것입니다).
  • 아비 코드 인터셉트 스튜디오: Cajoon의 .NET 동등성. 통찰력을주기 위해.
  • JavaFrame: 좋아, 그것은 트윗이지만, JVM 에이전트의 소스 코드 (MIT 라이센스에 따라)가있는 사용 가능한 SVN Repo를 가리킨다.

그래서, 나는 존재하지 않는 솔루션을 찾고 있습니까? 긴급하지는 않지만 프로젝트에 대한이 아이디어가 있었는데이 "알려지지 않은"(?) 경로를 탐색하고 실제 무언가를 얻는 것이 좋을 것입니다.

JVM 에이전트 (JVMTI의 예외 이벤트, 예시).

마침내 나는 다음과 같은 단락을 강조 할 것이다. Wikipedia의 예외 처리 기사:

Java 또는 .NET와 같은 런타임 엔진 환경에는 런타임 엔진에 연결되는 도구가 존재하며 관심을 제외하고는 예외가 발생할 때마다 예외가 발생했을 때 메모리에 존재했던 디버깅 정보를 기록합니다 (전화 스택 및 힙. 값). 이러한 도구를 자동화 된 예외 처리 또는 오류 가로 채기 도구라고하며 예외에 대한 '루트 원인'정보를 제공합니다.

그것이 아이디어입니다. 나는 누군가가 나에게 통찰력을 줄 수 있기를 바랍니다.

감사!

도움이 되었습니까?

해결책

나는 바라본다 JavaFrame 그리고 좋은 출발점 인 것 같습니다. Apache Ant를 설치하기 만하면됩니다 ant JavaFrame 디렉토리에서 다음과 같은 테스트 스위트 (내부 테스트 디렉토리)를 시작합니다.

LD_LIBRARY_PATH=../build/native/ java -agentlib:frameintrospect -classpath ../build/classes/:. org.thobe.frame.Test

로컬 변수를 얻지 못하지만 시도합니다. 내가 말했듯이, 그것은 시작점이 될 수 있습니다. 나는 그 사용법에 대해 더 나아가고 싶지만 시간과 문서가 없음 (Javaframe이라는 프로젝트가 많이 없음)은 나쁜 상황입니다.

어쩌면 언젠가는 다시 할 수 있습니다. 예, 다시. Cajoon이 있었고, 유망하고 반짝이는 것처럼 보였지만 웹 사이트는 다운되었으며 다운로드 가능한 항아리의 흔적은 없습니다.

모두에게 감사합니다!

PD. : 참조를 위해, 연구 중에 찾은 일부 링크 :

다른 팁

NetBeans가 자동 사용 로깅과 관련하여 수행 한 작업을 조사하고 싶을 수도 있습니다. http://wiki.netbeans.org/usageloggingspecification.

로컬 변수를 덤프하는 것은 Bajafresh4Life가 언급 한 디버거를 단순히 사용할 수 있다고 생각합니다.

어쩌면 그것은 할 수 있습니다 종자?

이것이 생산 환경에서 실행 가능한지 확실하지 않지만 전능 한 디버거가 있습니다.

디버거가 "시간에 거꾸로가요?"가 갈 수 있다면 어떨까요? 디버깅이 더 쉬워 질까요? 단순히 모든 변수 할당을 기록하면 본질적으로이를 수행 할 수 있습니다. 이것은 전능 한 디버깅에 대한 근본적인 아이디어입니다. 놀라운 부분은 ANT, Junit, Debugger 자체 인 이러한 방식으로 상당히 큰 프로그램을 디버깅 할 수 있다는 것입니다.

http://www.lambdacs.com/debugger/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top