2009-09-03 4 views
5

우리는 프로젝트를 난처하게 만들 예정이지만 원격 디버깅 및 핫 스왑 기능을 잃고 싶지는 않습니다.자바 코드 디버깅

가능합니까? 어떤 도구가 이것을 처리 할 수 ​​있습니까? 간단한 난독 화에 만족할 것입니다 - 클래스/메소드/변수의 이름을 바꿉니다.

[편집] Intellij IDEA를 사용하고 있지만이 작업에 대한 플러그인을 찾을 수 없습니다.

답변

5

우리는 동일한 종류의 필요성 (간단한 난독 화, 나중에 디버그해야 함) 을 사용하며 우리는 ProGuard을 사용합니다. Ant 태스크에 통합 될 수있는 자바 애플리케이션입니다.

많은 일을 할 수 있지만 완전히 조정할 수도 있습니다. 따라서 난독 화를 간단하게 유지할 수 있습니다. 옵션 중 하나는 "Symbol Correspondance Table"을 생성하는 것으로, obfuscated 코드에서 obfucated 코드를 다시 검색 할 수 있습니다. (클래스 qksdnqd의 xyz 변수가 실제로 MeaningfulClassName 클래스의 myCuteVarName이라는 것을 추적합니다)

편집 : 난독 화가 까다로울 수 있습니다. 몇 가지 예 :

  • 기본 방법의 이름을 변경할 수 없습니다.
  • 클래스 로더를 사용합니까? 난독 처리 후에도 클래스를 검색 할 수 있습니까?
  • ORM 매핑은 어떻습니까? 스프링 컨텍스트?

Edit2가 (있는 경우) : 당신은 또한 볼 수 있습니다

+0

예, 전 SC 테이블에 대해 알고 있습니다. 하지만 저와 제 팀은 쉽게 테이블을 사용하여 난독 화 코드를 디버그하고 변경할 수있는 전문가는 아닙니다 :) 그래서 저는 코드를 투명하게 디버깅 할 수있는 도구를 찾고 있습니다. – Vitaly

+0

당신은 전문가가 될 필요가 없다. 당신은 테이블과 난독 화 된 항아리를 앱에 제공하고, 다시 읽을 수있게된다 (주석 제외). 아 ...하지만 나는이 프로세스로 "핫 스왑 핑"할 수 있다고 생각하지 않습니다 (모든 항아리를 제거하고 교체하는 것과 같습니다) –

+0

뭔가 이해가되지 않을 수도 있습니다. "단계별로"단계별로 디버깅 코드를 원격 디버깅하고 디버거에서 같은 시간에 "일반"코드를 볼 수 있습니까 (테이블을보고, 다른 앱을 실행하는 등의 추가 작업없이)? – Vitaly

0

SD Java Obfuscator를 참조하십시오. 주석과 공백을 없애고 public이 아닌 모든 멤버/메소드/클래스 이름의 이름을 변경합니다.

또한 예를 들어 XYZ로 난독 화 된 각 기호 FOO, FOO -> XYZ 맵에 대해 코드가 난독 화 된 방법에 대한 맵을 제공합니다. 즉, XYZ를 언급하는 역 추적을 얻으면 쉽게 원래 기호 FOO를 결정할 수 있습니다. 물론, 당신 (난독 화를하는 사람)만이이 맵을 가지고 있기 때문에, 당신 만이 이것을 할 수 있습니다.