This application has stopped unexpectedly. Please try again.
분명히 이클립스상에서는 오류가 없다고 나왔는데, 막상 어플리케이션을 실행해보면 오류가 뜬다구요?
게다가, 무슨 오류인지 제데로 나오지도 않아서 뭘 고쳐야 할지 잘 모르겠다구요?
이번 글에서는 이런 오류에 대처하는 방법에 대해 알아보도록 하겠습니다.
이런 오류는 코드 작성시에는 보이지 않지만, 실행해보면 발생하는 오류라 하여, 런타임 오류(Run-time Error)라 불립니다. 이런 오류가 발생하는 이유는 여러 가지가 있지만, 대표적인 이유는 객체의 생성자가 실행되지도 않않는데 객체를 사용하려고 할 때, 그리고 특정 뷰(View)를 사용할 때에는 그에 맞는 id를 지정해주어야 하는데, 그렇지 못할 경우 등등.. 입니다.
자, 그럼 이런 오류가 발생했을 때의 화면을 볼까요?
아악! 이건 뭐 뭐가 오류난건지도 모르겠고....
이클립스 개발 환경에서 코딩을 할 때는 오류가 있으면 어디에 오류가 있다고 에러가 뜨는데, 이건 뭐 이렇게 오류가 발생했다고만 뜨고 마니... 답답하기 짝이 없습니다. 알아서 고치라는 것도 아니고.... 하지만, 이러한 오류도 자세한 정보를 확인할 수 있는 방법이 있습니다. 바로, LogCat을 사용하면 됩니다.
LogCat은 안드로이드 에뮬레이터에서 발생하는 여러 이벤트들을 보여주는데, 런타임 오류가 발생한 경우 그 오류가 무엇 때문에 발생했는지까지도 보여주게 됩니다. 그럼, 이 오류가 왜 발생했는제 LogCat을 통해 한번 확인해볼까요?
- 이클립스 오른쪽 상단의 [DDMS]화면을 클릭합니다. [DDMS]화면이 없다면 Window-Open Perspective-DDMS를 눌러 DDMS버튼을 추가합니다. 자세한 방법은 여기를 참고하세요.
- 하단에 LogCat 화면이 보일겁니다. LogCat에 찍힌 정보를 확인해볼까요?
클릭하면 크게 보여요~
으으...뻘건 화면으로 가득하군요.....
여러가지 잡다한 것들이 가득하지만, 가장 중요한 것은 중간쯤에 보면 Caused by.. 뒷부분의 내용입니다. 요놈 떄문에 에러가 난 것이기 때문이죠. 내용을 한번 볼까요?
08-30 20:30:34.949: ERROR/AndroidRuntime(883):
Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
아, 드디어(?) 이유를 알았습니다. ListActivity를 사용하면서 ListView의 아이디를 android:id/list로 지정해주지 않았군요! 원인을 찾았으니 문제를 해겷하고, 다시 실행해볼까요?
깔끔하게 잘 실행되는군요! 성공입니다.
이렇게 LogCat을 이용하면 각종 런타임 에러의 정보를 확인해볼 수 있습니다. 뿐만 아니라, 어플리케이션 내의 사이클, 혹은 이벤트가 발생했을 때 LogCat을 통해 그 정보가 표시되도록 하면 개발시 매우 편리합니다.
예제에서는 일부러(?) id를 바꿔서 에러가 발생되도록 하였지만, 실제 개발을 진행하다보면 별별 오류가 다 납니다. -_-; 그런 오류에 대한 것들은 직접 검색을 해 보면서 그 원인을 찾아보고 분석해보다보면 개발 경험에 많은 도움이 될 것입니다.
'안드로이드 개발 팁 > 일반' 카테고리의 다른 글
Project Properties 오류가 발생할 경우... (1) | 2009.09.24 |
---|---|
난, 특별해! - 안드로이드 에뮬레이터 스킨 바꾸기 (8) | 2009.09.06 |
ADT(Android Development Tools) 100% 활용하기 (2) | 2009.08.01 |
이클립스 ADT 200% 활용하기 : 속성 창 (0) | 2009.03.15 |
EditText에 힌트(Hint) 표시하기 (1) | 2009.03.14 |