2010-05-25 4 views
17

Eclipse의 내 logcat 창은 각 예외에 대해 StackTrace의 처음 몇 줄만 표시합니다. 이것은 예외가 발생한 곳을 자주 볼 수 없다는 것을 의미합니다. 이 설정을 변경할 수있는 방법이 있습니까?Eclipse Logcat 창이 예외 스택 추적을 자릅니다.

+0

로그 캣의 전체 스택 추적을 줄 것이다? 꽤 이상한 행동입니다 ... 스택 트레이스를 차단하는 출력 예제를 제공해 주시겠습니까? * 편집 * : 이클립스 태그를 보지 못했습니다. 죄송합니다. 어쨌든 원래의 logcat을 사용하면 문제가 없을 것이라고 생각합니다 :'adb logcat' – Cristian

+0

"... 12 more lines ..."부분을 언급한다면, 또 다른 예외의 원인이었습니다. 스택 트레이스의 윗부분이 다른 것과 같으면 하나의 프레임 만 전체 프레임 세트가 표시되고 다른 하나는 "..."처리가됩니다. (당신은 정말로 당신의 질문에 더 많은 세부 사항을 추가 할 필요가 있습니다 - 당신이 원하는 것을 추측하고 있습니다.) – fadden

+0

@Fadden : 당신 말이 맞아요. 이 의견을 답으로 게시하면 동의하게됩니다. – Casebash

답변

32

"... 12 개의 줄 ..."부분을 참조하면 다른 예외의 원인 인 예외 만 볼 수 있습니다. 스택 트레이스의 윗부분이 이전 트레이스와 같으면 가장 바깥 쪽 예외에 대해서만 전체 프레임 세트가 표시되고 다른 트레이스에는 "..."처리가 적용됩니다.

표시되지 않은 추적의 청크는 예외 원인 체인에서 이전에 나타난 추적의 복제본입니다. 예를 들어 main()이라는 메서드가 one()이고 two()을 호출하는 코드가 있다고 가정 해보십시오. four()이 예외를 throw합니다. two()은 그것을 잡아서 다시 던졌습니다. 예외는 다음과 같이 표시됩니다

java.lang.RuntimeException: re-throw 
    at Foo.two(Foo.java:14) 
    at Foo.one(Foo.java:7) 
    at Foo.main(Foo.java:3) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.RuntimeException: first 
    at Foo.four(Foo.java:23) 
    at Foo.three(Foo.java:19) 
    at Foo.two(Foo.java:12) 
    ... 3 more 

는 예외가 말한다 "에 의한" "... 3 개"보다는 명시 적으로 one(), main()dalvik.system.NativeStart.main 목록. 따라서 초기 예외의 전체 추적을 얻으려면 먼저 해당 추적을 읽은 다음 위의 추적에서 계속하십시오. 이 오버랩하지

주 - 모두 two() 나타납니다,하지만 "첫 번째"는 three()에 대한 호출에의, 그리고 "다시 던져"에 추적에 그것이 throw 명령에의 추적.

+0

원본 예외가 7 개 이상의 라인을보고 싶다면 무엇이 해결책입니까? – George

+0

설명을 다시 작성하고 예제를 추가했습니다. – fadden

+1

예, 잠시 동안 "진짜"Java로 작업하지는 못했지만, "Java stacktrace 12 more"또는 그와 비슷한 것을 검색하여이를 처리해야했습니다. 당신이 지적한대로 수정 된 ("12 개 이상의") 줄은 위의 스택 추적에서 중복 된 줄입니다. LogCat이 stacktrace의 "도움이되는"줄을 잘라내는 인상을 받았다.하지만 그렇지 않다. 오해를 고쳐 주셔서 고마워요. – George

-1

코드가 너무 많은 스택을 생성하는 메서드를 호출하면 코드에서 예외를 처리 할 수 ​​있고 로그와 관련된 내용을 출력 할 수 있습니다.

예외 처리가 전혀없고 코드에서 어디에서 핸들러를 사용해야하는지조차 알지 못하면 문제는 완전히 다른 곳에서 발생합니다. 예외 처리는 그보다 조금 더해야합니다.

1

모든 로그 메소드 (log.d, log.i, log.e 등)를 (String tag, String msg, Throwable tr) 매개 변수로 오버로드 할 수 있습니다. 여기서 세 번째 매개 변수는 예외입니다. 당신이 사용하는 어떤 SDK 버전이 당신에게

http://developer.android.com/reference/android/util/Log.html

관련 문제