'공부이야기/컴퓨터 이야기'에 해당 되는 글 30건

  1. 2016.06.30 MFC 쓰레드 함수 안에서 멤버 접근
  2. 2016.04.20 구조체 메모리 저장방식 #pragma pack
  3. 2015.07.16 C++ 언어용 행렬(Matrix) 라이브러리: Eigen
  4. 2015.06.22 MFC ESC 키를 종료버튼과 다른 기능을 수행하게 하기
  5. 2015.06.10 윈도우즈 프로그래밍에서 유니코드로 코딩법
  6. 2015.05.30 XBee의 X-CTU 프로그램 사용방법
  7. 2015.05.30 Visual studio: To change the project toolset
  8. 2015.05.25 C언어 변환명세
  9. 2015.04.20 다이얼로그에서 키보드 메시지(이벤트) 받기
  10. 2015.03.17 상대경로를 이용해 파일 실행하기(바로가기 만들기)
  11. 2015.02.16 윈도우7 복구 모드 활성화
  12. 2015.01.09 윈도우를 재설치하지 않고 HDD에서 SSD로 이동하는 방법
  13. 2013.11.26 메모장 익스플로러 MS Office 등에서 한영 전환 안되는 경우
  14. 2013.11.20 윈도우7에서 가상 무선 공유기 만들기
  15. 2012.10.31 Excel 다중 창 열기
  16. 2011.09.06 Visual studio 2008 삭제가 안된다면
  17. 2011.08.03 윈도우 7 파일 폴더 소유권, 접근 권한 편집
  18. 2011.08.03 Windows7에서 파일 저장시 권한이 없다고 나오는 경우
  19. 2011.05.31 Firefox 에서 구글 캘린더 접속아 안될 때
  20. 2011.01.03 USB CD-ROM 등 자동 실행 안하기
  21. 2010.10.25 [스크랩]Eclipse Galileo에서 C,C++ 개발환경 구축하기 - CDT, MinGW
  22. 2010.04.28 오픈소스 보안프로그램 종류와 안전성은?
  23. 2010.02.03 한글에서 블록 계산식의 소수점 아래 자리수 설정
  24. 2010.01.25 첨부파일을 아웃룩 익스프레스로 보내기 위한 설정
  25. 2010.01.24 Internet explorer 8 삭제하기
  26. 2010.01.24 소스보기를 눌렀을때 탐색기가 뜨는 경우 해결법
  27. 2010.01.20 n by n matrix의 determinant 구하기
  28. 2009.08.10 sin 그래프 그리기
  29. 2008.09.13 Java 설치, 환경변수 설정, 실행까지
  30. 2008.08.23 [펌]Visual C++ 6.0 사용하기 - 디버깅
2016.06.30 14:56

MFC 쓰레드 함수 안에서 멤버 접근

[MFC] Thread 내에서 멤버함수 호출


MFC 에서 쓰레드 사용할 때 멤버 변수 참조



Trackback 0 Comment 0
2016.04.20 13:12

구조체 메모리 저장방식 #pragma pack

구조체 메모리 저장방식 #pragma pack


Trackback 0 Comment 0
2015.07.16 10:35

C++ 언어용 행렬(Matrix) 라이브러리: Eigen

C++ 언어용 행렬(Matrix) 라이브러리: Eigen
Trackback 0 Comment 0
2015.06.22 17:18

MFC ESC 키를 종료버튼과 다른 기능을 수행하게 하기

ESC 키를 종료버튼과 다른 기능을 수행하게 하기


[MFC] 대화상자에서 Enter키 막는 방법

Trackback 0 Comment 0
2015.06.10 22:06

윈도우즈 프로그래밍에서 유니코드로 코딩법

윈도우즈 프로그래밍에서 유니코드로 코딩법


Trackback 0 Comment 0
2015.05.30 14:04

XBee의 X-CTU 프로그램 사용방법

XBee의 X-CTU 프로그램 사용방법


Trackback 0 Comment 0
2015.05.30 14:01

Visual studio: To change the project toolset

To change the project toolset

  1. In Visual Studio, in Solution Explorer, open the shortcut menu for your project (not for your solution) and then choose Properties to open your project Property Pages dialog box.

  2. In the Property Pages dialog box, open the Configuration drop-down list and then select All Configurations.

  3. In the left pane of the dialog box, expand Configuration Properties and then select General.

  4. In the right pane, select Platform Toolset and then select the toolset you want from the drop-down list. For example, if you have installed the Visual Studio 2010 toolset, select Visual Studio 2010 (v100) to use it for your project.

  5. Choose the OK button.


Trackback 0 Comment 0
2015.05.25 22:29

C언어 변환명세

http://x86boa.tistory.com/entry/printf-scanf-함수의-포맷문자열

Trackback 0 Comment 0
2015.04.20 22:18

다이얼로그에서 키보드 메시지(이벤트) 받기

http://darkpgmr.tistory.com/7

Trackback 0 Comment 0
2015.03.17 12:57

상대경로를 이용해 파일 실행하기(바로가기 만들기)

다음과 같은 cmd 파일을 작성하여 이용한다.


start "" "상대경로\실행할파일"


예를 들어 A라는 폴더 안에 B와 C라는 하위폴더가 있고 C 안에 있는 note.pdf 파일을 가리키는 바로가기를 B 안에 만들고자 하면 B 안에 cmd 파일을 만들고 내용을 다음과 같이 작성한다..


start "" "..\C\note.pdf"

Trackback 0 Comment 0
2015.02.16 10:43

윈도우7 복구 모드 활성화

cmd를 관리자권한으로 실행 후 아래 입력
reagentc /enable



Trackback 0 Comment 0
2015.01.09 10:11

윈도우를 재설치하지 않고 HDD에서 SSD로 이동하는 방법

http://egloos.zum.com/isao76/v/2410316

Trackback 0 Comment 0
2013.11.26 14:55

메모장 익스플로러 MS Office 등에서 한영 전환 안되는 경우

메모장이나 MS Office, 익스플로러 등에서 갑자기 한영키가 먹지 않는 경우가 있는데 키보드 왼쪽의 Alt + Shift를 눌러주면 한영키가 다시 동작한다.
Trackback 0 Comment 0
2013.11.20 18:02

윈도우7에서 가상 무선 공유기 만들기

윈도우7에서 가상 무선 공유기 만들기
Trackback 0 Comment 0
2012.10.31 18:19

Excel 다중 창 열기

http://sound10000w.tistory.com/105

Trackback 0 Comment 0
2011.09.06 16:31

Visual studio 2008 삭제가 안된다면

Visual Studio 2008을 삭제할려다 "A problem has been encountered while loading the setup components. Canceling setup"라는 메시지만 나오고 삭제 불가능한 경우가 발생했어요. 대략 난감!
.
.
.
.
.
http://alan.keum.org/183
Trackback 0 Comment 0
2011.08.03 14:20

윈도우 7 파일 폴더 소유권, 접근 권한 편집

http://snoopybox.co.kr/1510

http://liverex.tistory.com/54
Trackback 0 Comment 0
2011.08.03 10:52

Windows7에서 파일 저장시 권한이 없다고 나오는 경우

Windows7에서 웹 서핑 중 파일을 저장하거나 메모장, 그림판 등에서 파일을 저장할려고 할 경우
권한이 없다고 나오는 경우는 왜 그럴까요?

먼저 현재 로그인 한 사용자를 살펴봅시다.

제어판 - 사용자 계정 및 가족 보호 - 사용자 계정

사용자를 보니 Administrator로 되어 있습니다.
'아, 관리자로 되어 있는게 맞구나'
하고서는 작업을 계속합니다.

.
.
.

원문보기
Trackback 0 Comment 0
2011.05.31 15:52

Firefox 에서 구글 캘린더 접속아 안될 때

도구 > 설정 > 개인정보 탭

google 관련 쿠키를 삭제, 혹은 귀찮으면 쿠기를 몽땅 삭제하고 다시 접속한다.
Trackback 0 Comment 0
2011.01.03 18:27

USB CD-ROM 등 자동 실행 안하기

1. 시작->실행->gpedit.msc
2. 그룹정책 창에서 컴퓨터구성->관리템플릿->시스템
3. 자동 실행 사용 안 함을 더블클릭
4. 설정 탭에서 사용(E) 클릭
5. 자동 실행 사용 안 함에서 모든 드라이브 선택후 확인

사용자 삽입 이미지
Trackback 0 Comment 0
2010.10.25 13:10

[스크랩]Eclipse Galileo에서 C,C++ 개발환경 구축하기 - CDT, MinGW

출처 : 지돌스타 블로그

윈도우 환경에서 Eclipse Galileo 버전으로 C, C++ 개발을 위한 환경을 만드는 것을 설명하는데 목표가 있다. 기존에 Eclipse기반으로 Flash Builder 플러그인을 설치해 Flash 개발을 하거나 Java 개발하시는 분들이 같은 환경에서 C, C++을 개발하고자 한다면 이 글은 유용한 팁정도가 될 것이다.

.
.
.
.
본문연결
Trackback 0 Comment 0
2010.04.28 19:08

오픈소스 보안프로그램 종류와 안전성은?

출처 : 세상에서 가장 안전한 이름, 안철수연구소

컴퓨터는 다양한 하드웨어 부품으로 이루어져 있다. 그 위에 운영체제 및 다양한 소프트웨어들로 구성되어 운영되고 있다. 소프트웨어라는 것이 있기에 우리는 브라우저를 통해 인터넷을 할 수 있고, 동영상을 본다든지 그림을 그린다든지 하는 상상 이상의 많은 것들을 할 수 있다. 그만큼 하드웨어 위에 어떤 소프트웨어를 이용하느냐에 따라 사용방법은 크게 달라지게 된다. , 그렇다면 지금 여러분들의 컴퓨터에는 얼마나 많은 소프트웨어가 설치되어 있나? 그 중에는 돈을 지불하고 사용하는 상용 소프트웨어도 있을 것이고 무료로 사용하는 소프트웨어도 있을 것이다. 특히 무료로 사용하는 것이라고 하면 무엇보다도 눈이 가게 된다. 아무런 비용을 지불하지 않고 사용할 수 있으니 말이다. 지금 필자가 소개하고자 하는 것은 바로 우리들이 좋아하는 무료, 오픈소스 프로그램이다.
.
.
.
more
Trackback 0 Comment 0
2010.02.03 21:14

한글에서 블록 계산식의 소수점 아래 자리수 설정

한글에서 블록 계산식을 이용할 경우가 있다. 이 경우에 결과가 소수점 아래에 너무 많은 자리수까지 표현되는 경우 이를 설정하는 방법 즉... 3.33333333 을 3.33 으로 나타나게 하고 싶을 경우...... 결과식의 블록에 커서를 옮기고 - 편집 - 고치기 - 형식에서 원하는 것으로 선택
Trackback 0 Comment 0
2010.01.25 16:40

첨부파일을 아웃룩 익스프레스로 보내기 위한 설정

윈도우에서 파일을 오른쪽 클릭 한 후 첨부파일로 보낼 때 아웃룩 익스프레스로 연결되도록 하기 위한 설정법

아웃룩 익스프레스의 도구 - 옵션 - 일반 탭에서 "이 응용 프로그램은 기본 메일처리기가 아닙니다"라는 메세지 옆의 기본값으로 버튼을 눌러주고 적용하면 된다.


사용자 삽입 이미지

Trackback 0 Comment 0
2010.01.24 18:40

Internet explorer 8 삭제하기

시작 -> 실행 -> %windir%\ie8\spuninst\spuninst.exe
Trackback 0 Comment 0
2010.01.24 18:39

소스보기를 눌렀을때 탐색기가 뜨는 경우 해결법

\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\View Source Editor\Editor Name 에서 (기본값) 더블클릭 -> 값데이터(V) 에 notepad.exe 를 입력
Trackback 0 Comment 0
2010.01.20 00:03

n by n matrix의 determinant 구하기

/***************************************************************
* 기능 : 사용자로부터 square matrix의 크기와 성분들을 입력받아
*   cofactor를 이용해determinant를 구함
* 입력 : square matrix의 크기, matrix의 성분들
* 출력 : 입력받은 matrix, matrix의 determinant*
*
* 작성일 : 09년 12월 07일
* 최종 수정일 : 09년 12월 07일
***************************************************************/

#include <stdio.h>  //입출력을 위한 헤더파일
#include <stdlib.h>  //dynamic memory 할당을 위한 헤더파일
#include <math.h>  //x^n을 계산하는 pow함수를 이용하기 위한 헤더파일

void InputMat(double **mat, int size);     //사용자로부터 matrix의 성분들을 입력받는 함수
void ShowMat(double **mat, int size);     //사용자로부터 입력받은 matrix를 출력하는 함수
double DetMat(double **mat, int size);     //matrix와 size를 입력받아 determinant를 반환하는 함수
double CofacMat(double **mat, int p, int q, int size); //matrix와 size, index를 입력받아 cofactor를 반환하는 함수

int main(void)
{
 int size=2;
 int i=0;
 double **mat;

 printf("Square matrix의 크기를 입력하세요 >>");
 scanf_s("%d", &size);

 //matrix의 dynamic memory 할당
 mat = (double**)malloc( sizeof(double*) * size );
 for (i=0 ; i<size ; i++) {
  mat[i] = (double*)malloc( sizeof(double) * size );
 }

 InputMat(mat, size);  //사용자로부터 matrix를 입력받음
 ShowMat(mat, size);   //입력받은 matrix를 출력함
 
 printf("\nDeterminant = %.2lf\n", DetMat(mat, size));

 //matrix의 dynamic memory 해제
 for (i=0 ; i<size ; i++) {
  free(mat[i]);
 }
 free(mat);
 return 0;
}

void InputMat(double **mat, int size) {
 int p=0, q=0;

 for (p=0; p<size; p++) {
  for (q=0; q<size; q++) {
   printf("row %d, column %d의 성분을 입력해 주세요 >>", p+1, q+1);
   scanf_s("%lf", &mat[p][q]);
  }
 }
}

void ShowMat(double **mat, int size) {
 int p=0, q=0;
 
 printf("matrix = \n");
 for (p=0; p<size; p++) {
  if (p == 0) {
   printf("┌");
  } else if(p == size-1) {
   printf("└");
  } else {
   printf("│");
  }

  for (q=0; q<size; q++) {
   printf(" %.2lf", mat[p][q]);
  }

  if (p == 0) {
   printf(" ┐\n");
  } else if(p == size-1) {
   printf(" ┘\n");
  } else {
   printf(" │\n");
  } 
 }
}

double DetMat(double **mat, int size) {
 int p=0, q=0;
 double det=0;

 if (size == 1) {   //determinant of 1 by 1 matrix
  return mat[0][0];
 } else if ( size == 2 ) { //determinant 2 by 2 matrix
  return mat[0][0]*mat[1][1] - mat[0][1]*mat[1][0];
 } else {     //3 by 3 이상
  for (q=0, det=0 ; q<size ; q++) {
   det = det + mat[0][q]*CofacMat(mat, 0, q, size);
  }
  return det;
 }
 return 0;
}

double CofacMat(double **mat, int p, int q, int size) {
 int i=0, j=0;  //인자로 받은 matrix의 index
 int x=0, y=0;  //cmat의 index
 double **cmat;
 double cofactor=0;
 
 //cofactor matrix의 dynamic memory 할당
 cmat = (double**)malloc( sizeof(double*) * (size-1) );
 for (i=0 ; i<(size-1) ; i++) {
  cmat[i] = (double*)malloc( sizeof(double) * (size-1) );
 }

 //mat으로 부터 cmat추출(cmat은 mat의 p행과 q열의 원소를 제외한 나머지 원소들로 구성된 matrix)
 for (i=0,x=0 ; i<size ; i++) {
  if (i != p) {
   for (j=0,y=0 ; j<size ; j++) {
    if (j != q) {
     cmat[x][y] = mat[i][j];
     y++;
    }
   }
   x++;
  }
 }
 
 //cofactor를 계산
 cofactor = pow(-1,p)*pow(-1,q)*DetMat(cmat,size-1);

 //cofactor matrix의 dynamic memory 해제
 for (i=0 ; i<(size-1) ; i++) {
  free(cmat[i]);
 }
 free(cmat);

 return cofactor;
}


사용자 삽입 이미지

Trackback 0 Comment 0
2009.08.10 08:06

sin 그래프 그리기



#include <stdio.h>
#include <math.h>

#define X 50
#define Y 79

void graphSine(void);    //sine 함수의 그래프를 그리는 함수
double PI(void);     //원주율을 반환하는 함수
void initializing(char graph[][X], double x[], double y[], int index[]); //초기화 함수
void settingStar(char graph[][X], int index[]);        //그래프모양을 '*'로 세팅
void plot(char graph[][X]);   //그래프를 plot

int main(void)
{
 graphSine();
 return 0;
}

void graphSine(void) {    //sine 함수의 그래프를 그리는 함수
 char graph[Y][X] = {' '};  //그래프 모양의 '*'를 저장할 배열
 double x[X];     //x축 값을 저장할 배열
 double y[X];     //y축 값을 저장할 배열
 int index[X];     //graph에서 '*'로 표시될 index를 저장하기 위한 배열

 initializing(graph, x, y, index);
 settingStar(graph, index);
 plot(graph);
}

double PI(void) {     //원주율을 반환하는 함수
 return acos(-1);
}

void initializing(char graph[][X], double x[], double y[], int index[]) {  //초기화 함수
 const double T = 2*PI();  //주기 2pi
 const double dx = T/(X-1);  //x축값들 사이의 간격
 int i, j;

 for(i=0 ; i<X ; i++) {   //x축을 나타내기 위한 세팅
  graph[(Y-1)/2][i] = '|';
 }

 for(i=0 ; i<X ; i++) {   //x 값을 0부터 2pi까지 등간격으로 나누어 초기화
  x[i] = i*dx;
 }

 for(i=0 ; i<X ; i++) {   //x 값에 대응하는 sin(x)값을 초기화후 0부터 Y-1 사이의 값으로 확대
  y[i] = sin(x[i]);
  y[i] = (Y-1)/2*(y[i]+1);
 }

 for(i=0 ; i<X ; i++) {   //y값을 0부터 Y-1 사이의 정수 값으로 이산화
  for(j=0 ; j<Y ; j++) {
   if(j-0.5 <= y[i] && y[i] < j+0.5) {
    index[i] = j;
    break;
   }
  }
 }
}

void settingStar(char graph[][X], int index[]) {  //그래프모양을 '*'로 세팅
 int i;

 for(i=0 ; i<X ; i++) {
  graph[index[i]][i] = '*';
 }
}

void plot(char graph[][X]) {  //그래프를 plot
 int i;
 int j;

 for(i=0 ; i<Y ; i++) {   //y축 그리기
  switch(i) {
   case 0:
    printf("-1");
    break;
   case (Y-1)/2-1:
    printf("0");
    break;
   case Y-1:
    printf("1\n");
    break;
   default:
    printf("-");
  }
 }

 for(j = 0 ; j<X ; j++) {  //'*'를 이용해 그래프를 출력
  for(i=0 ; i<Y ; i++) {
   printf("%c", graph[i][j]);
  } puts("\n");
 }
}


사용자 삽입 이미지

Trackback 0 Comment 0
2008.09.13 21:17

Java 설치, 환경변수 설정, 실행까지

1. 설치파일 다운받기


http://java.sun.com/
에 접속한다.



좌측 하단에서 Java SE를 클릭한다.








상단의 텝에서 Downloads를 클릭 후 Previous Releases를 클릭, 그다음 J2SE 5.0 Downloads를 클릭한다.







중간쯤에 JDK 5.0 Update xx 를 클릭한다.









Platform에서 자신에게 맞는것을 고르고 (본인의 경우 Windows) Language 에서 Multi-language를 선택 후 체크박스에 체크를 하고 continue 버튼을 누른다.






windows offline installation에 있는 파일을 클릭하여 설치파일을 다운로드 받는다.




설치중.........








2. 환경변수 설정하기


내컴퓨터 아이콘을 오른쪽 클릭 후 속성 -> 고급 -> 환경변수를 클릭한다. 시스템 변수란에서 새로 만들기를 클릭한다. 변수 이름에 JAVA_HOME 변수 값에 jdk의 설치폴더 주소를 입력한다.
변수 이름 : JAVA_HOME
변수 값 : C:\Program Files\Java\jdk1.5.0_16









CLASSPATH가 없다면 새로 만들기를 클릭한 후 다음과 같이 입력한다.
변수 이름 : CLASSPATH
변수 값 : .;







시스템 변수에서 Path 변수를 선택 후 편집을 눌러 변수 값의 맨 끝에 jdk의 bin폴더 경로를 입력한다. 이미 입력되어 있는 값들과 세미콜론으로 구분한다.

변수 값 : 기존 변수값;C:\Program Files\Java\jdk1.5.0_16\bin







시작 -> 실행 -> cmd 라 입력하고 엔터를 쳐서 콘솔창을 실행시킨다.
javac -version 이라고 입력 후 엔터를 쳐서 다음과 같이 나오면 환경변수 설정은 완료








3. 간단한 프로그램 작성 후 실행해 보기

내컴퓨터를 실행 후 C드라이브로 이동 C드라이브 안에 javasample이라는 폴더를 하나 생성한다.
그리고 폴더 안에서 마우스 오른쪽 버튼을 클릭 후 새로만들기 -> 텍스트문서 를 클릭하여 파일을 만든 후 실행시켜 다음과 같은 소스를 입력한다. (대소문자 구분 주의)

public class Test {
 public static void main(String args[]) {
  System.out.println("자바 안뇽");
 }
}




다른이름으로 저장하기를 눌러 Test.java 라고 입력 후 저장한다.


시작 -> 실행 -> cmd 입력 후 엔터
입력창에 순서대로 다음과 같이 입력한다.
cd\ 엔터
cd javasample 엔터
javac Test.java 엔터
java Test 엔터



위와같이 출력이 나왔다면 성공
Trackback 0 Comment 0
2008.08.23 20:58

[펌]Visual C++ 6.0 사용하기 - 디버깅



이번에는 VC++ 6.0으로 디버그하는 법을 한번 알아보겠습니다.

프로그래밍에서 가장 어렵고 많은 시간을 차지하는게 디버깅이죠.


VC++은 여러가지 기능을 제공하여 좀더 수월하게 디버깅을 할 수 있습니다.


십진수의 이진수 값을 보여주는 간단한 예제를 통해 디버깅 방법을 알아보도록 하겟습니다.


#include <iostream>
#include <climits>              // for CHAR_BIT
using namespace std;

void main()
{
    int num = 2004, size, mask = 0x80000000;
    char bin[64];

    // int형의 비트 크기를 구한다.
    size = sizeof(int) * CHAR_BIT

    for( int i = 0; i < size; i++ )
    {
        if( (num & mask) == 0 ) bin[i] = '0';
        else bin[i] = '1';

        mask >>= 1;        // 우측 시프트
    }
    bin[i] = '\0';

    prinft("%d = %s\n", num, bin);
}



▷ 문법에러 디버깅


위 소스를 컴파일하면 에러가 발생하고 에러 정보가 아래 빌드창에 나타나게 됩니다.


 

에러 메세지를 더블클릭하거나 F4를 누르면 해당 에러위치로 에디터 창의 커서가 바로 이동하게 됩니다.



▷ 논리에러 디버깅


문법에러는 컴파일러가 명확하게 알려주기 때문에 디버깅이 아주 쉽습니다. 그러나 논리에러는 프로그래머가 직접 찾아내는수 밖에 없죠.


위 소스의 문법에러를 고치고 컴파일을 하면


2004 = 00000000000000000000011111111111


라는 결과가 나오지만 사실 십진수 2004는 이진수로 11111010100 입니다.


어디서 잘못됬는지 디버깅을 해보겠습니다.


디버깅을 시작할려면 먼저 툴바의 아이콘이나 단축키 F9로 브레이크 포인트를 지정합니다.



그 다음에 툴바의 아이콘이나 단축키 F5로 디버그를 시작합니다.

 
그럼 디버그 모드로 전환되고 디버그 툴바와 진행화살표가 브레이크포인트에서 멈춰있는것을 볼 수 있습니다.


 

아래 세 버튼을 적절히 사용해서 한줄씩 디버그를 해나가면 됩니다.

(코드가 복잡할 경우 브레이크 포인트를 여러개 잡아서 F5 를 눌러가며 디버그 할 수도 있습니다.)

Step Into : 한줄씩 실행하며 함수 내부로 들어간다. (F11)


Step Over : 한줄씩 실행하며 함수 내부로 들어가지 않는다. (F10)


Step Out : 함수에서 바로 빠져나온다. (Shift + F11)


디버그 중에 현재 변수의 값을 알려면 변수 위에 마우스를 가져다 두거나 Watch 창을 이용할 수 있습니다.


bin[] 배열과 mask 변수가 어떻게 변하는지 Watch 창으로 감시해보도록 하죠.


Watch 창에 두 변수의 이름을 추가합니다.



(변수이름 길어서 타이핑하기가 귀찮으면 블럭을 잡아서 마우스로 드래그해도 됩니다. )
 
 
그런데 mask 값이 10진수로 나와서 보기 불편하기 때문에 아래처럼 쉼표(,)를 찍고 포맷을 정하는 기호를 붙일수 있습니다. ( x 16진수, s 문자열, d 십진수, c 문자 등 )

디버깅을 해보면 우측 시프트한 mask 값이 잘못 되었다는 것을 알수 있습니다.
 

mask 변수값이 0x80000000 일때 mask >>= 1; 을  하면 0x40000000 가 되어야 하는데 mask 변수의 자료형이 signed int 이기 때문에 우측 산술시프트가 되어버려서 0xc0000000 가 되었던 겁니다.
 
우측 논리시프트를 하기 위해서 int mask = 0x80000000; 를 unsigned int mask = 0x80000000 로 고침으로써 제대로된 결과를 얻었습니다.
 
 
 
다음에는 Quick Watch 와 Call Stack 창 그리고 Break Point 대해 설명해보도록 하겠습니다.
 
 
 
참고도서 -------------------------------------------
 
DEBUGGING C++ ( H.PAPPAS 저 이준하 역 ) 인포북 출판
 
 
 
출처 : 네이버카페
http://cafe.naver.com/cafec/1339
Trackback 0 Comment 0