• 1나루토매니아
  • 2뱅이
  • 3푸타코타
  • 4완벽그자체
  • 5해삼
  • 1뱅이
  • 2나루토매니아
  • 3알짜배기
  • 4뱅이
  • 5빙그레우유
안드로이드 프로그램이 죽는 경우 디버깅 방법
연속출석 :
1일 랭킹 : 399위 중장7
45%
45% (1541 /3455)
  • 댓글 0 |
  • 추천 1 |
  • 조회 4714 |
  • 2012-08-09 (목) 10:12
    프로그램이 죽는 경우 기본적인 디버깅 방법조차 모르는 경우가 많은 것 같아서 정리를 합니다. 프로그램이 죽어서 Q&A 게시판에 글을 남기실때 이 내용을 반드시 확인하시고 질문을 올려주시기 바랍니다.



    프로그램이 죽는 경우라 하면 먼저 위와 같은 에러 메시지(Sorry! The application XXXX (process com.xxx.xxx.xxx) has stopped unexpectedly. Please try again. Force close)가 화면에 나타나는 경우를 말합니다.

    이 경우 디버깅 화면의 LogCat 메시지를 살펴보면 다음과 같습니다. (로그캣이 뭔지 모르신다면 먼저 프로젝트 실행과 디버깅 그리고 단말 세팅 이 글을 읽어보세요)


    가장 가까운 마지막 부분 근처에 E 로 찍히고 빨간색으로 표시되는 메시지가 주욱 찍힙니다. 소스 어디에서 어떤 이유로 에러가 발생했는지를 표시해주는 로그로 에러의 해결을 위해 가장 중요한 부분입니다.

    08-05 00:02:14.564: ERROR/AndroidRuntime(12848): Uncaught handler: thread main exiting due to uncaught exception
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.apis/com.example.android.apis.view.Gallery1}: java.lang.NullPointerException
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.app.ActivityThread.access$1800(ActivityThread.java:112)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.os.Handler.dispatchMessage(Handler.java:99)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.os.Looper.loop(Looper.java:123)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.app.ActivityThread.main(ActivityThread.java:3948)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at java.lang.reflect.Method.invokeNative(Native Method)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at java.lang.reflect.Method.invoke(Method.java:521)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at dalvik.system.NativeStart.main(Native Method)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): Caused by: java.lang.NullPointerException
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at com.example.android.apis.view.Gallery1.onCreate(Gallery1.java:48)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
    08-05 00:02:14.774: ERROR/AndroidRuntime(12848): ... 11 more


    주루룩 선택하고 에러 메시지를 카피&페이스트할 수 있습니다. 여기서 중요한 부분은 굵은 글씨로 표시해보았습니다. 널포인트 익셉션이 발생하고 소스의 어느 어느 위치에서 발생하는지를 표시합니다.

    01.super.onCreate(savedInstanceState);
    02.setContentView(R.layout.gallery_1);
    03.
    04.// Reference the Gallery view
    05.Gallery g = (Gallery) findViewById(R.id.add);
    06.// Set the adapter to our custom adapter (below)
    07.g.setAdapter(new ImageAdapter(this));
    08.
    09.// Set a item click listener, and just Toast the clicked position
    10.g.setOnItemClickListener(new OnItemClickListener() {
    11. public void onItemClick(AdapterView parent, View v, int position, long id) {
    12. Toast.makeText(Gallery1.this, "" + position, Toast.LENGTH_SHORT).show();
    13. }
    14.});
    15.
    16.// We also want to show context menu for longpressed items in the gallery
    17.registerForContextMenu(g);

    해당 소스의 관련 부분을 보고 어디에서 문제가 발생했는지를 확인합니다.

    Q&A 게시판에 에러 발생과 관련하여 질문을 하실때에는 먼저 Stopped Unexpectedly로 죽는 경우인지를 밝하시고, LogCat에서 붉은 메시지를 카피해서 붙여주신 이후에, 관련 소스 부분까지 정확히 찾아서 질문에 붙여주시기 바랍니다. 소스 전체를 압축해서 첨부해서 디버깅을 해달라는 경우가 종종 있는데 해당 소스를 일일이 다운받아서 문제점을 찾아서 보는 경우도 없고, 나중에 같은 문제를 접하는 다른 개발자분들에게도 도움이 되지 않습니다. 화면을 그냥 카피하지 마시고 반드시 위와 같이 에러메시지와 소스부분을 텍스트로 질문에 넣어주세요.


    [이 게시물은 더어플님에 의해 2016-07-12 15:23:56 개발 꿀팁에서 복사 됨]
    댓글을 작성하시려면 로그인을 하셔야지만 작성가능합니다. [로그인하기] [회원가입하기]
    공지글 이거슨 꿀팁!! 작성 가이드 v1.1 (2013-11-13) +174 더어플 13/03/12 140680
    젤리빈 로그캣 변경점
    젤리빈 로그캣 변경점
    11년전
    h.4327
    v.1
    GNCkorea
    삼성 AdHub SDK 심각한 버그 있네요.
    삼성 AdHub SDK 심각한 버그 있네요.
    11년전
    h.3677
    v.1
    GNCkorea
    구글 넥서스 OTA 끄기 - 루팅 필요
    구글 넥서스 OTA 끄기 - 루팅 필요
    11년전
    h.4123
    v.0
    GNCkorea
    구글 넥서스 수신된 sms/mms 저장경로 아시는 분계신가요??
    구글 넥서스 수신된 sms/mms 저장경로 아시는 분계신가…
    11년전
    h.6689
    v.2
    GNCkorea
    MS 스마트폰 가능성 보인 Zune HD, 그리고 마무리
    MS 스마트폰 가능성 보인 Zune HD, 그리고 마무리
    11년전
    h.1774
    v.0
    GNCkorea
    이제 Round1, MS에게도 스마프폰의 기회는 있었다
    이제 Round1, MS에게도 스마프폰의 기회는 있었다
    11년전
    h.1849
    v.0
    GNCkorea
    MS와 다른 시선의 Apple 스마트폰
    MS와 다른 시선의 Apple 스마트폰
    11년전
    h.3506
    v.0
    GNCkorea
    MS가 생각하는 Smart Phone
    MS가 생각하는 Smart Phone
    11년전
    h.1556
    v.0
    GNCkorea
    윈도우모바일의 침몰과 아이폰의 성공 그 원인을 분석-1980년대로의 여행
    윈도우모바일의 침몰과 아이폰의 성공 그 원인을 분석-1…
    11년전
    h.2619
    v.0
    GNCkorea
    윈도우모바일의 침몰과 아이폰의 성공 그 원인을 분석하다
    윈도우모바일의 침몰과 아이폰의 성공 그 원인을 분석하다
    11년전
    h.1604
    v.0
    GNCkorea
    베가 S5에 탑재된 1300만 화소 카메라 품질은?
    베가 S5에 탑재된 1300만 화소 카메라 품질은? (4)
    11년전
    h.12063
    v.3
    GNCkorea
    베가 S5 하드웨어 성능 및 배터리 시간 테스트
    베가 S5 하드웨어 성능 및 배터리 시간 테스트 (1)
    11년전
    h.9905
    v.0
    GNCkorea
    미니 윈도우가 포함된 베가 S5 특화 기능들
    미니 윈도우가 포함된 베가 S5 특화 기능들
    11년전
    h.7532
    v.0
    GNCkorea
    베가 레이서2보다 발전된 FLUX UX 적용
    베가 레이서2보다 발전된 FLUX UX 적용
    11년전
    h.8253
    v.0
    GNCkorea
    한 손에 들어오는 5인치 LTE 스마트폰! 스카이 베가 S5
    한 손에 들어오는 5인치 LTE 스마트폰! 스카이 베가 S5 (1)
    11년전
    h.3733
    v.1
    GNCkorea
    윈도우8과 함께 등장한 윈도우 스토어, 자유와 통제의 기로에서 선택은?
    윈도우8과 함께 등장한 윈도우 스토어, 자유와 통제의 …
    11년전
    h.3083
    v.0
    GNCkorea
    포켓PC, 옴니아…영욕의 윈도우폰
    포켓PC, 옴니아…영욕의 윈도우폰 (1)
    11년전
    h.3558
    v.1
    GNCkorea
    안드로이드 강좌 6 - Java 코드(Code)에서 뷰(View) 다루기
    안드로이드 강좌 6 - Java 코드(Code)에서 뷰(View) 다…
    11년전
    h.2960
    v.0
    GNCkorea
    안드로이드 강좌 5 - XML에서의 TextView, ImageView, LinearLayout
    안드로이드 강좌 5 - XML에서의 TextView, ImageView, L…
    11년전
    h.5070
    v.1
    GNCkorea
    안드로이드 강좌 4 - 액티비티(Activity), 뷰(View), 레이아웃(Layout)
    안드로이드 강좌 4 - 액티비티(Activity), 뷰(View), 레…
    11년전
    h.5019
    v.1
    GNCkorea
    안드로이드 강좌 3 - 프로젝트 실행과 디버깅 그리고 단말 세팅
    안드로이드 강좌 3 - 프로젝트 실행과 디버깅 그리고 단…
    11년전
    h.3572
    v.0
    GNCkorea
    안드로이드 강좌 2 - 이클립스 개발환경 사용법 및 프로젝트 생성
    안드로이드 강좌 2 - 이클립스 개발환경 사용법 및 프로…
    11년전
    h.3953
    v.1
    GNCkorea
    안드로이드 프로그램이 죽는 경우 디버깅 방법
    안드로이드 프로그램이 죽는 경우 디버깅 방법
    11년전
    h.4715
    v.1
    GNCkorea
    윈도우즈 개발환경 구성 - Eclipse 3.6.1 (Helios), ADT-8.0.1
    윈도우즈 개발환경 구성 - Eclipse 3.6.1 (Helios), ADT…
    11년전
    h.3617
    v.1
    GNCkorea
    Android Virtual Device(AVD) 사용법
    Android Virtual Device(AVD) 사용법
    11년전
    h.6377
    v.1
    GNCkorea
    안드로이드 프로젝트 생성 및 실행
    안드로이드 프로젝트 생성 및 실행
    11년전
    h.2382
    v.0
    GNCkorea
    안드로이드 강좌 1 - 어플리케이션 개발 시작하기. SDK 설치 및 실행
    안드로이드 강좌 1 - 어플리케이션 개발 시작하기. SDK …
    11년전
    h.3428
    v.1
    GNCkorea
    잼있게 따라해보는 옵티머스 LTE2 테마박스
    잼있게 따라해보는 옵티머스 LTE2 테마박스
    11년전
    h.2831
    v.0
    GNCkorea