자바에서 가능한지 궁금하다는 생각이 들었습니다. eclipse 또는 netbeans를 사용하여 디버깅을 수행 할 때 객체를 기록하고 저장한다고 가정 해 보겠습니다. 그런 다음 디버깅의 두 번째 라운드를 진행할 때 개체를 다시 저장하십시오. 이제 모든 속성에 대해 두 번째 객체와 함께 기록 된 첫 번째 객체를 비교하고 차이점을 찾을 수 있습니다. 이것이 가능한가? 당신은 일반 자바 코드에서이 작업을 수행 할 수 있습니다객체의 시원한 디버깅
답변
는 (당신의 객체가 Serializable
입니다 가정),하지만 난 어떤 디버거는이 기능이 내장되어 있다고 생각하지 않습니다.
디버깅 실행 중 첫 번째 객체를 직렬화하는 경우가 있습니다 (정적 메서드가있는 경우 일반적으로 디버거에서 호출하여 어딘가에 저장할 수 있음). 그런 다음 두 번째 실행 중에 다른 메서드를 호출하여 직렬화 된 양식에서 개체를 다시 구성한 다음 해당 개체를 비교합니다 (equals()
메서드 또는 일부 맞춤 비교 메서드 사용). 실제로
는 내가이 작업을 수행 할 때마다 난 그냥 종이에 관련된 속성을 낙서와 수동으로 비교 찾을 수 있지만. 드물게 나는 수천 개에서 수천 개의 속성을 볼 수 있습니다. 현재보고있는 증상과 객체의 동작에 대해 생각해 보면 일반적으로 디버거를 시작하기 전에 무엇이 바뀌 었는지에 대해 매우 잘 알고있을 수 있으며, 후자를 사용하여 가설을 확인하고 값이 "잘못되었는지"를 확인하십시오.
의 그림 9 참조 당신이하는 일은 종이에 적어 두는 것뿐입니다. 그리고 그것을하는 더 전문적인 방법을 찾고 – cometta
은 개체에게 유용한 toString()
방법을 지정하고 다음 기대와 결과를 비교하기 위해 단위 테스트를 사용합니다.
는하지만 동의는이 작업을 자동으로 수행하는 프로그램을 작성하는 것이 가능해야하므로 원격 디버깅을위한 와이어 프로토콜은 모든 객체를 직렬화 할 수 있습니다.
OTOH는, 직렬화되는 것은 아니다 객체는 위험 할 수 있습니다. 실수로 클래스 로더에서이 코드를 사용하면 모든 객체와 클래스 및 모든 것을 하나의 큰 덩어리로 되돌릴 수 있습니다. 그래서 당신은 깊은 객체 트리에서 혼란을 일으키지 않도록 serialization을 막을 방법이 필요합니다.
그 외에 앱의 현재 상태를 저장하고 시간대에 되돌릴 수있는 기능이 필요합니다.
나는 어떤 디버거가 나중에 비교하는 객체를 저장할 수 있다고 생각하지 않습니다. 당신이 생각 할 수있는 것은과 같이 변수에 시계 변수를 만들지 만, 아파치 평민의 ToStringBuilder()으로 포장하고 콘솔에 덤프하는 것입니다
System.out.println(ToStringBuilder.reflectionToString(object));
중단 점의에 도달 할 때마다 개체의 내용이 콘솔에 표시됩니다. 개인 데이터를 볼 수도 있습니다.
따라서 개체의 toString() 메서드를 직접 수정할 필요가 없습니다 (예 : 라이브러리 개체에 유용함). 그런 다음 두 패스의 출력을 비교할 수 있습니다.
나에게 멋진 기술보세요. 이것을 지적 해 주셔서 감사합니다. – cometta
- 1. 디버깅 목적으로 객체의 상호 작용 기록을 추적 할 수 있습니까?
- 2. 디버깅
- 3. Django : 디버깅 항목이 사라집니다.
- 4. 다른 객체의 속성 인 객체의 유형을 가져옵니다.
- 5. 레일즈 : 객체의 ID를 가진 객체의 레코드 선택
- 6. 자바 : 객체의 배열에서 객체의 유형을 결정하는 방법?
- 7. 객체의 속성
- 8. 객체의 직렬화
- 9. 객체의 인스턴스화
- 10. vs2010 디버깅 : 모듈이 디버깅 정보없이 빌드 되었습니까?
- 11. GCC에 해당하는 디버깅 힙/STL 디버깅?
- 12. 디버깅 용이성을위한 코딩
- 13. segv 디버깅
- 14. IE에서 디버깅
- 15. outofmemoryexception 디버깅
- 16. PHPeclipse로 디버깅
- 17. 장고 디버깅
- 18. 파이썬 디버깅
- 19. Xcode에서 디버깅
- 20. 디버깅 getResource *
- 21. pushViewController 디버깅
- 22. OLEDB 디버깅
- 23. Xcode의 디버깅
- 24. 디버깅 문제
- 25. MonoDevelop 디버깅?
- 26. Android 디버깅?
- 27. 자바 디버깅
- 28. 디버깅 JQuery와는
- 29. 메이크 디버깅
- 30. 디버깅 모드
이클립스 디버깅이 가까운 무언가를 - 그것은 중단 점 사이의 값/참조를 변경 강조 할 것이다 - 내가 좋아했던 http://www.ibm.com/developerworks/java/library/os-ecbug/ – Nate