2012-08-22 2 views
3

내 asm 코드를 간소화하고 싶습니다. 지금까지 Eclipse에서 바이트 코드 개요로 코드 작성 방법을 배우고 있습니다. 디버그 정보가있는 바이트 코드 만 볼 수 있기 때문에 안전하게 제거 할 수있는 항목을 알지 못하고 가능한 모든 사례를 직접 테스트 할 수있는 지식이있는 사람이 빠른 대답을 선호합니다.ASM의 어떤 명령어는 디버깅에만 필요합니까?

이러한 가정은 사실입니까?

  1. 심지어
  2. visitLabel 같은 클래스 나 메소드 (디버그 정보와 방법에 디버그 정보가없는 코드의 주입)에, 다른 스타일을 혼합 할 수 있습니다 만 점프 명령어가 아닌 주위를위한 대상으로 필요하다
  3. visitLineNumber는 생략 할 수있는 모든 명령 (디버그 정보)
  4. visitLocalVariable는 생략 할 수 있습니다 (디버그 정보)

감사 에스!

+0

를 생략 할 수 있습니다에 대한 정보를 생산 생략 할 수 있습니까? 그렇지 않으면 무시할만큼 많은 디버그 정보를 넣을 수 있습니다. –

+0

필자는 디버깅을 할 수는 있지만 대개 컴파일러 설정을 전환하고 싶지는 않습니다. 이는 편리합니다. 제가 가장 관심을 갖고있는 것은 1입니다. - 나는 시간에 대한 집중적 인 테스트를 설정하지 않고 직접 대답을 얻을 수 없습니다. 나는 모든 사람들이 같은 문제에 걸려 넘어지기를 원합니다. – Arne

+0

한 번에 문서화하는 것이 좋습니다. 일반적으로 대부분의 사람들은 디버깅에 남겨 두어야합니다. 난독 화 코드. –

답변

2

코드를 디버그 정보없이 컴파일하여 바이트 코드 아웃 라인보기에서 볼 수 있습니다. 이클립스에서는 별도의 프로젝트를 사용한다.

지금 당신의 질문에 대답 : 당신은 디버그와 디버그하지 않고 코드를 혼합 할 수

  1. . 이러한 코드를 디버깅 할 때 디버거는 디버그 정보에서 생략 된 변수를 표시하지 않습니다.
  2. visitLabel 호출은 바이트 코드의 모든 위치를 표시하는 데 사용됩니다 (예 : 점프 명령어의 대상, 예외 처리기 범위 및 예외 핸들러 진입 점의 경계, 지역 변수 및 행 번호 범위, 새로 도입 된 일부 유형 주석 (예 : JSR308) 등
  3. visitLineNumber는 주로 디버거에서 사용하는 행 번호에 대한 정보를 생성합니다 및
  4. visitLocalVariable 지역 바르 주로 디버거에서 사용하고 디버깅 정보없이 코드를 컴파일 할 수 없습니다