자바 코드는 핫 픽스 구현 및 디버깅하는 방법을 해결하는 방법 변경

자바 코드는 어떻게 해결하기 위해 변경? 핫 수정 및 디버깅하는 방법을 달성하기 위해? 이 코드 변경을 수반하는 경우 Java 언어의 경우, 일반적으로, 문제를 해결하기 위해 JVM을 다시 시작 선택합니다. 그러나 시간이 좀 걸릴 것 이상 평균을 다시 시작하면 다음 열 수리는 두 번째 수준의 복구 오류의 실현을위한 가능성을 창조 발생, 수리는 설명했다합니다.

 

자바 코드는 핫 픽스 구현 및 디버깅하는 방법을 해결하는 방법 변경

 

 

핫 픽스 자바

텐센트 부서, 기본 바이너리에서 시작 (C 언어) : 어설프게 : 자바 로딩 메커니즘에서 시작 알리 : DeXposed, andfix 현재보다 화재 열 재활 프로그램은 크게 두 파벌로 나뉘어있다. 오늘은 주로 자바 기반의 로딩 메커니즘에 핫픽스의 구현을 연구합니다.

취득한 요소 장전 후에 클래스에 대응 DexPathList 오브젝트의 배열 자체 (요소 [] dexElements)를 시작할 때 앤드류 클래스 로더, 클래스를로드 할 것이다. for 루프에서 다음 먼저 덱스 파일 중 통과하고, 그래서, 그래서 우리가 배열 요소의 첫 번째 요소에 넣어 덱스 파일로 패키지 좋은 수리 클래스를 만들기로, 덱스 파일에서 클래스를 얻는 것입니다 클래스가 좋은 수리 클래스를 얻을 수있는 최신인지 확인합니다.

핫 픽스의 구현 단계 :

1은 덱스 형식으로 패치를 제공합니다. 질문 자바 파일에 수리 (당신은 버그의 실제 상황에 따라 코드를 수정할 수 있습니다), 덱스 파일 (DX 명령 프로그램)에 패키지 클래스 파일, 클래스 파일에 자바 파일을 컴파일합니다.

2, 덱스 형식의 패치를로드합니다.

3, 항아리, APK, zip 형식의 패치를로드. classes.dex해야합니다, 압축 패키지의 유형이 덱스 파일에 배치해야합니다,뿐만 아니라 이름이 필요합니다.

자바 디버깅

자바 디버깅 툴은 문제 샷 명령의 수 있지만, 킬러 명령이, methodTrace 및 redefineClass을 제공합니다.

신속한 문제 발견을위한 methodTrace 명령은 정보를 획득하기 위해 일시 ​​정지 JVM 디버깅 방법없이 수행 할 수 있습니다. 기본 형식 :

후지산 -c -m

선택적 매개 변수 : -d -t -i -n - 시간 -u 등등.

redefineClass 명령은 대안 JVM 클래스의 바이트 코드 구현 핫픽스를 다시 수행하지 않고 수행 할 수 있습니다. 문제를 찾습니다 MT 명령을 사용할 때 당신이 온라인 신속하게 필요로하는 경우에, 당신이 명령을 사용하여 코드를 수정. format 명령을 사용하여입니다 :

알디 에프 -p [className1 : class1Path className1 : class2Path]

같은 클래스가 이미로드되어 있는지 여부로, 클래스 특정 정보를 당신이 필요로하는 대상 JVM 클래스에있는, 그리고 말할 수있다 (때문에) findClass 명령은? 부하 경우, 클래스 클래스 로더 하나 등을로드합니다. 이 명령은 클래스의 완전한 이름을 입력하지 할 수 있습니다, 당신은 클래스와 일치하는 정규 표현식을 입력 할 수 있습니다.

자바 엔지니어 당신은, 전투의 전제를 넣어 이론과 실제, 그리고 효율적으로 배울 좋은 지식 기반 모두 필요, 잘 지불해야합니다. 당신은 더 나은 자바 프로그래밍을 학습하려는 경우, 당신은 전문적인 학습을 선택할 수 있습니다.

추천

출처www.cnblogs.com/qianfengzz/p/11573316.html