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

Weitere ähnliche Inhalte

Was ist angesagt?

[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다wonmin lee
 
포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전주항 박
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010Ryan Park
 
19.debugger detected and anti anti-techniques hangul
19.debugger detected and anti anti-techniques hangul19.debugger detected and anti anti-techniques hangul
19.debugger detected and anti anti-techniques hangulre4lfl0w
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinDong Chan Shin
 
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은Sung Eun Kim
 
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기우영 주
 
PSR - Code Convention
PSR - Code ConventionPSR - Code Convention
PSR - Code Conventionjhyeon1010
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Sangcheol Hwang
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기Heo Seungwook
 
[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅종빈 오
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동Sungchul Park
 
[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어NAVER D2
 
[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swiftNAVER D2
 

Was ist angesagt? (19)

[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
팀장 잔소리
팀장 잔소리팀장 잔소리
팀장 잔소리
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
 
포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전
 
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
온라인 게임에서 사례로 살펴보는 디버깅 in NDC2010
 
19.debugger detected and anti anti-techniques hangul
19.debugger detected and anti anti-techniques hangul19.debugger detected and anti anti-techniques hangul
19.debugger detected and anti anti-techniques hangul
 
Work With Engineer
Work With EngineerWork With Engineer
Work With Engineer
 
Effective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshinEffective c++ chapter7_8_9_dcshin
Effective c++ chapter7_8_9_dcshin
 
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
 
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
 
Exception&log
Exception&logException&log
Exception&log
 
PSR - Code Convention
PSR - Code ConventionPSR - Code Convention
PSR - Code Convention
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅[실전 윈도우 디버깅] 13 포스트모템 디버깅
[실전 윈도우 디버깅] 13 포스트모템 디버깅
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
 
[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어[1B1]스위프트프로그래밍언어
[1B1]스위프트프로그래밍언어
 
[Osxdev]4.swift
[Osxdev]4.swift[Osxdev]4.swift
[Osxdev]4.swift
 

Ähnlich wie Windows Debugging Technique #1

훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기Changyol BAEK
 
위대한개발문화
위대한개발문화위대한개발문화
위대한개발문화신승환
 
0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdfWonJongOh1
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향Eunhyang Kim
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
20150307 abcd발표_ux디자이너 실력으로 살아남기
20150307 abcd발표_ux디자이너 실력으로 살아남기20150307 abcd발표_ux디자이너 실력으로 살아남기
20150307 abcd발표_ux디자이너 실력으로 살아남기SANGBUM HA
 
DebugIt/chapter1~4
DebugIt/chapter1~4DebugIt/chapter1~4
DebugIt/chapter1~4stupidfox
 
현장에서 사용하는 Software production
현장에서 사용하는 Software production현장에서 사용하는 Software production
현장에서 사용하는 Software productionJinho Yoo
 
서비스를 성공적으로 만드는 방법
서비스를 성공적으로 만드는 방법서비스를 성공적으로 만드는 방법
서비스를 성공적으로 만드는 방법우영 주
 
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함Woo Sanghun
 
SW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project KeynoteSW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project Keynote진수 한
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011devCAT Studio, NEXON
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better EngineerDaeMyung Kang
 
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어CONNECT FOUNDATION
 
10.continued reversing techniques in vb, use of decompilers and a basic anti ...
10.continued reversing techniques in vb, use of decompilers and a basic anti ...10.continued reversing techniques in vb, use of decompilers and a basic anti ...
10.continued reversing techniques in vb, use of decompilers and a basic anti ...re4lfl0w
 
하루에 10번 배포하기 - flickr
하루에 10번 배포하기 - flickr하루에 10번 배포하기 - flickr
하루에 10번 배포하기 - flickrSeongSik Kim
 
짝 프로그래밍 소개
짝 프로그래밍 소개짝 프로그래밍 소개
짝 프로그래밍 소개Seungyoon Lee
 
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)AgileKoreaConference Alliance
 

Ähnlich wie Windows Debugging Technique #1 (20)

훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기
 
위대한개발문화
위대한개발문화위대한개발문화
위대한개발문화
 
0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf0917_서인고_멘토링_오원종_최종.pdf
0917_서인고_멘토링_오원종_최종.pdf
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
20150307 abcd발표_ux디자이너 실력으로 살아남기
20150307 abcd발표_ux디자이너 실력으로 살아남기20150307 abcd발표_ux디자이너 실력으로 살아남기
20150307 abcd발표_ux디자이너 실력으로 살아남기
 
DebugIt/chapter1~4
DebugIt/chapter1~4DebugIt/chapter1~4
DebugIt/chapter1~4
 
현장에서 사용하는 Software production
현장에서 사용하는 Software production현장에서 사용하는 Software production
현장에서 사용하는 Software production
 
서비스를 성공적으로 만드는 방법
서비스를 성공적으로 만드는 방법서비스를 성공적으로 만드는 방법
서비스를 성공적으로 만드는 방법
 
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함
Ux Camp Seoul 2014 - 레고에서 발견하는 좋은 제품의 사소함
 
SW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project KeynoteSW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project Keynote
 
AKC2020 marimba 마주연
AKC2020 marimba 마주연AKC2020 marimba 마주연
AKC2020 marimba 마주연
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
오승준, 사회적 기술이 프로그래머 인생을 바꿔주는 이유, NDC2011
 
How To Become Better Engineer
How To Become Better EngineerHow To Become Better Engineer
How To Become Better Engineer
 
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
 
10.continued reversing techniques in vb, use of decompilers and a basic anti ...
10.continued reversing techniques in vb, use of decompilers and a basic anti ...10.continued reversing techniques in vb, use of decompilers and a basic anti ...
10.continued reversing techniques in vb, use of decompilers and a basic anti ...
 
하루에 10번 배포하기 - flickr
하루에 10번 배포하기 - flickr하루에 10번 배포하기 - flickr
하루에 10번 배포하기 - flickr
 
짝 프로그래밍 소개
짝 프로그래밍 소개짝 프로그래밍 소개
짝 프로그래밍 소개
 
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
 

Windows Debugging Technique #1

  • 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 등등  연습장연습장 ++ 두뇌두뇌 !!
  • 16. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.