2. AgendaAgenda
누구를 위한 웹 캐스트인가누구를 위한 웹 캐스트인가 ??
버그란 무엇인가버그란 무엇인가 ??
디버깅이란 무엇인가디버깅이란 무엇인가 ??
디버거란 무엇인가디버거란 무엇인가 ??
3. 누구를 위한 웹 캐스트인가누구를 위한 웹 캐스트인가
?? 버그가 무엇인지에 대해서 생각해보지버그가 무엇인지에 대해서 생각해보지
않은 개발자않은 개발자
디버깅을 어떻게 진행해야 하는지 정확디버깅을 어떻게 진행해야 하는지 정확
한 순서가 머리에 떠오르지 않는 개발자한 순서가 머리에 떠오르지 않는 개발자
디버깅을 혼자서 수행하지 못하는 개발디버깅을 혼자서 수행하지 못하는 개발
자자
디버깅 책을 읽어 본적이 없는 개발자디버깅 책을 읽어 본적이 없는 개발자
이제는 인식의 변화가 필요한 시기이제는 인식의 변화가 필요한 시기 !!
4. 버그란 무엇인가버그란 무엇인가 ??
개발자 입장에서 본 제품의 판매에 영향개발자 입장에서 본 제품의 판매에 영향
을 미치는 모든 것을 미치는 모든 것
코드 상에서의 오류만을 의미하지 않음코드 상에서의 오류만을 의미하지 않음 !!
44 가지 분류가지 분류
일관성없는 사용자 인터페이스일관성없는 사용자 인터페이스
요구 사항 불충족요구 사항 불충족
성능 저하성능 저하
충돌 또는 데이터 손상충돌 또는 데이터 손상
출처출처 : Debugging .NET Application (John Robbins: Debugging .NET Application (John Robbins 저저 ))
5. 일관성없는 사용자 인터페이스일관성없는 사용자 인터페이스
심각한 버그는 아니지만 골칫거리이다심각한 버그는 아니지만 골칫거리이다 ..
Microsoft WindowsMicrosoft Windows 의 성공요인중 하나의 성공요인중 하나
는 일관성있는는 일관성있는 UIUI
클라이언트 응용 프로그램을 작성할클라이언트 응용 프로그램을 작성할
때때 ,, 일관성없는일관성없는 UIUI 관련된 문제점들은관련된 문제점들은
Microsoft Windows User ExperienceMicrosoft Windows User Experience 에에
있는 권고 사항들을 따른다면 쉽게 해결있는 권고 사항들을 따른다면 쉽게 해결
할 수 있다할 수 있다 ..
6. 요구 사항 불충족요구 사항 불충족
사용자의 요구사항을 충족시키지 못하는 것사용자의 요구사항을 충족시키지 못하는 것
은 해결하기 가장 어려운 버그은 해결하기 가장 어려운 버그 .(.( 충분한 요구충분한 요구
사항 조사의 부재에서 오는 문제사항 조사의 부재에서 오는 문제 ))
ITIT 업계에서의 이러한 문제의 원인은 커뮤니업계에서의 이러한 문제의 원인은 커뮤니
케이션 문제이다케이션 문제이다 ..
일반적으로 개발팀은 제품을 사용하는 고객일반적으로 개발팀은 제품을 사용하는 고객
과 직접적으로 커뮤니케이션 하지 않는다과 직접적으로 커뮤니케이션 하지 않는다 ..
고객과 보다 많은 이야기를 나누어라고객과 보다 많은 이야기를 나누어라 ..
고객 지원시 통화내용이나 고객 지원고객 지원시 통화내용이나 고객 지원 e-maile-mail
들을 검토하라들을 검토하라 ..
항상 약속할수 있는 기능을 제공하라항상 약속할수 있는 기능을 제공하라 ..
7. 성능 저하성능 저하
실질적 데이터로 제품테스트를 게을리실질적 데이터로 제품테스트를 게을리
할 경우 제품 출시 후 심각한 성능문제할 경우 제품 출시 후 심각한 성능문제
발생발생
응용 프로그램의 성능 요구사항을 미리응용 프로그램의 성능 요구사항을 미리
결정하라결정하라 .(.( 최저 성능 한계선 유지최저 성능 한계선 유지 ))
가능한 실제 세계와 근접한 시나리오로가능한 실제 세계와 근접한 시나리오로
테스트를 할 수 있다면 개발 초기에 테테스트를 할 수 있다면 개발 초기에 테
스트를 진행한다스트를 진행한다 ..
8. 충돌과 데이터 파괴충돌과 데이터 파괴
대부분의 개발자들이 버그를 생각할 때대부분의 개발자들이 버그를 생각할 때
떠올리는 것떠올리는 것 ..
이 세션에서 중점적으로 이야기 하려는이 세션에서 중점적으로 이야기 하려는
내용내용 ..
만약 이러한 버그가 있다면 절대로 제품만약 이러한 버그가 있다면 절대로 제품
을 팔아서는 안된다을 팔아서는 안된다 ..
9. 디버깅이란 무엇인가디버깅이란 무엇인가 ??
사전적 정의사전적 정의 :: 버그를 해결하는 행위버그를 해결하는 행위
진정한 정의진정한 정의 :: 버그가 발생한 원인을 이버그가 발생한 원인을 이
해하여 문제를 해결한 후해하여 문제를 해결한 후 ,, 해결 방안 등해결 방안 등
을 문서화하여 동료와 공유하는 행위을 문서화하여 동료와 공유하는 행위
누구나 하고 있고 할 수 있다고 생각하누구나 하고 있고 할 수 있다고 생각하
지만 실제로는 그렇지 않은 작업지만 실제로는 그렇지 않은 작업 !!
10. 디버깅 전문가가 되려면디버깅 전문가가 되려면 ??
High LevelHigh Level 부터부터 Low LevelLow Level 까지 모든까지 모든
기술적인 부분들을 이해하고 있어야 함기술적인 부분들을 이해하고 있어야 함
하지만하지만 ,, 이는 너무나 광범위하여 쉽게이는 너무나 광범위하여 쉽게
달성하기 어렵다달성하기 어렵다 ..
기본적인 디버깅 프로세스를 이해하는기본적인 디버깅 프로세스를 이해하는
것이 가장 중요것이 가장 중요 !!
11. 디버깅 준비물디버깅 준비물
소스 코드 관련 문서소스 코드 관련 문서
연습장연습장 ,, 필기 도구필기 도구
No music!No music!
자신의 의견을 열심히 들어줄 동료자신의 의견을 열심히 들어줄 동료 !!
짝 프로그래밍을 진행하면 많은 도움을 받짝 프로그래밍을 진행하면 많은 도움을 받
을 수 있다을 수 있다 ..
12. 디버깅 마음 가짐디버깅 마음 가짐
““ 내 코드를 보고 비난하지는 않을까내 코드를 보고 비난하지는 않을까 ?”?”
(X)(X)
““ 이 버그를 언제 다 설명해주지이 버그를 언제 다 설명해주지 ?” (X)?” (X)
““ 괜히 동료의 업무를 방해하는 것은 아괜히 동료의 업무를 방해하는 것은 아
닐까닐까 ?” (X)?” (X)
““ 이게 진짜 버그 맞나이게 진짜 버그 맞나 ?” (O)?” (O)
““ 동료에게 …를 물어봐야지”동료에게 …를 물어봐야지” (O)(O)
““ 지금 머리가 너무 복잡해지금 머리가 너무 복잡해 ,, 이봐 날 좀이봐 날 좀
도와줘”도와줘” (O)(O)
13. 디버깅 진행디버깅 진행 PassPass
More than three passMore than three pass
11stst
Pass :Pass : 오류가 발생하는 위치를 정확하오류가 발생하는 위치를 정확하
게 파악게 파악
22ndnd
Pass :Pass : 예상하는 위치에서 오류가 발생예상하는 위치에서 오류가 발생
하는지 확인하는지 확인
33rdrd
Pass … :Pass … : 문제 점 수정 후 디버깅으로문제 점 수정 후 디버깅으로
수정 여부 확인수정 여부 확인
14. 디버깅 프로세스디버깅 프로세스
버그 재현
버그 기술
항상 버그는 여러분이 작성한
것으로 가정한다
분할 통치
창조적으로 생각하기
보조 툴
심도있는 디버깅을
시작한다
버그가 수정되었는지
검증한다
배우고 공유한다
새로운 가정을
형식화한다
수정 적용
출처출처 : Debugging .NET Application (John Robbins: Debugging .NET Application (John Robbins 저저 ))
15. 디버거란 무엇인가디버거란 무엇인가 ??
디버깅을 하기 위하여 사용하는 도구디버깅을 하기 위하여 사용하는 도구
WinDBG, Visual Studio series, SoftIceWinDBG, Visual Studio series, SoftIce 등등
연습장연습장 ++ 두뇌두뇌 !!