수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1694312
  • Today | 57
  • Yesterday | 606

Programming/Debugging2007/03/23 17:13

Set Next Statement 를 통해서 디버깅 하기

원본 : http://www.debuglab.com/knowledge/setnext.html

1.요약

프로그램을 실행하는 도중에 특정한 값을 바꾸어서 함수의 흐름이 정상적으로 작동하는지를 살펴보고, 에러가 났다면, 어떤 값에서 에러가 난것인지를 재컴파일(Re-compile)없이 확인해보는 방법에 대해서 살펴보겠습니다.


2.본문

VC++ 디버거는 그 기능중에 전체 프로그램의 흐름을 이쪽 저쪽으로 뛰어다닐 수 있는 기능을 제공합니다.

Set Next Statement 라는 기능이죠. 물론 이 기능은 Run to cursor 와 같습니다.

그럼 다음과 같은 상황에서 유용하게 써먹을 수 있겠네요.

void Func(int nValue); 
라는 함수가 있는데..

nValue 값에 따라서 어떻게 다른 값이 출력되는지를 확인해 볼려고 하는데. 보통의 경우라면 다음의 두가지 방법을 사용하겠죠.

1. Func() 함수에 비교하고 싶은 값을 여러번 넣어서 매번 컴파일해서 확인한다.
2. Func() 함수를 여러번 사용하여 확인한다.

아.. 1번과 2번.. 어떤게 더 빠를까요? 둘다 너무 비효율적입니다.

그래서 사용할 수 있는 방법이 바로 제가 위해서 설명한 'Set Next Statement' 입니다.

그럼 위의 경우에 어떻게 적용할까요?

일단 Func() 에 넣어 보고 싶은 값을 넣어서 컴파일 합니다.
그리고 Func()를 Step Over를 써서 결과를 확인해 봅니다.
다시 Func() 를 Set Next Statement 로 해놓구..
들어가는 인자의 값을 바꿉니다. 그리고 다시 Step Over를 해봅니다. 하고싶을때까지 합니다..
그리고 끝냅니다.
이런 방법을 통해서 컴파일 하지도 않고 여러번 확인 할 수 있답니다.
물론, 이렇게 직접 변수의 값을 바꾸어 사용하기 때문에 제약도 있고, 주의해야 할 점도 많습니다.

그럼 이제 예제를 통해서 직접 확인해 보도록 하겠습니다.


3.예제

void Func(int nValue) 

{ 

    if (nValue < 0) 

        printf("Error"); 

    else 

        printf("Thanks.."); 

} 





int main(int argc, char* argv[]) 

{ 

    // 프로그램 시작시 

    // User Breakpointer 를 걸어 둡니다. 

    __asm int 3; 

    

    // 초기에 nVal의 값이 -1 로 설정되어 있기 때문에 

    // Func() 함수는 Error 값을 Console Window 에 print합니다. 

    // 그런데. 사용자가 nVal 의 값이 정확히 0 이상이면 

    // Thanks 를 출력하는지를 살펴보기 위해서 

    // nVal 의 값을 바꾸어 다시 컴파일 해서 살펴보아야 할 수도 있는데 

    // 실제로 그렇게 하지 않고, 

    // nVal 의 값을 Watch Window 에서 바꾸어 테스트 해볼 수도 있습니다. 

    

    // 1. Watch Window 창의 띄웁니다. 

    // 2. nVal=10  이라고 입력합니다. 

    // 3. 그럼 nVal의 값이 10으로 바뀐것을 확인할 수 있습니다. 

    // 4. [1] 번 라인에 마우스를 놓고, 오른쪽 버튼을 눌러 

    //    'Set Next Statement' 를 선택합니다. 

    // 5. 그럼 [1]번 라인으로 cursor 가 옮겨 진것을 확인할 수 있습니다. 

    // 6. 다시 F10 을 눌러 Step Over를 해서 Func(nVal); 을 지나면 

    //    화면에 Thanks.. 라는 값이 출력된것을 확인할 수 있습니다. 

    // 7. 이제 Func() 함수가 정상적으로 작동하는 값을 찾을 수 있습니다. 

    

    int nVal = -1; // [1] 번 라인 

    Func(nVal); // [2] 번 라인 

    

    return 0; 

} 


4.참고

Debugging Applications



- 2001.08.19 Smile Seo -
"Debugging" 카테고리의 다른 글
  • Set Next Statement 를 통해서 디버깅 하기 (0)2007/03/23
  • 파일로 트레이스 하도록 바꾸기 (3줄이면 됨) (0)2007/03/21
  • Watch 창에서 함수 실행하기 (0)2007/03/21
  • 소스로 바로가는 TRACE (0)2007/03/19
  • LastError를 보여주는 Debugging Trace Macro (0)2007/03/05
2007/03/23 17:13 2007/03/23 17:13
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2740

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 509 510 511 512 513 514 515 516 517 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 암호화
  • FoxPro
  • 게임
  • 삼성
  • Run-Length
  • List
  • renfe
  • 캐시 적종
  • 열망
  • CVS
  • Hangame
  • 개발
  • 약한 참조
  • 세션빈
  • 비자
  • Silverlight
  • Photograph
  • 정보
  • auto_ptr
  • 연예

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.