2011년4월7일...symbol table(메모리), 디버깅 변수값확인, 마인드스톰 Tribot light sensor

 

 

 

1. 디버그 하기

1)예제3-14

image 함수의 시작에 중단점을 놓고 디버깅 시작(F5)…

image 화살표가 생기고 F11(진입)키를 누르면 중괄호 안으로…

 

image 변수의 선언은 한 번에 끝나나 sum은 0을 대입해 멈춤.
F10(진행)키를 눌러서 하나의 명령문씩 실행.

 

image

학교에선 VS6.0이라 number변수를 초기화하지 않아도 계속 진행이 되었는데 VS2010에선 더 이상 디버깅모드로 진행이 안 되고 ‘계속’버튼을 누르면 실행만 됨. 각 단계 별 메모리의 값을 확인하는 것이 불가능해진다.


2)예제3-15

image

예제3-14는 디버깅 진행이 불가하니 예제3-15로 symbol table과 디버깅하는 법에 대해 설명한다.

○symbol table

type

name

address

int

number

주소

long

sum

주소

변수명 number와 sum을 symbol이라고 한다.

image

VS6.0에선 오른쪽 하단 watch창이고 VS2010에선 왼쪽 하단 조사식1에 변수명 앞에 ‘&’(ampersend)를 붙이면 주소와 데이터를 알 수 있다. 시작에 머물러 있고 변수선언은 하지 않았으므로 값은 알 수 없다. F11키를 눌러 진행해보자.

image

image

변수 여러 개를 선언하더라도 한 번에 다 만들어지고 VS6.0에선 메모리에 연속적으로 배치되었으나 VS2010에선 number는 0x0040FD2C번지에 sum은 0x0040FD20에 위치한다. 컴파일러 마다 차이가 있을 수 있다는 것을 증명한다. 컴파일 옵션을 줘서 연속적으로 배치하게 할 수도 있겠으나 지금은 띄어져서 배치되었다고 해서 문제가 되지 않기 때문에 이대로 계속 진행함.

자료형 ‘&’ + 변수명 실제주소
int &number 0x0040FD2C
long &sum 0x0040FD20

symbol table을 만드는 것이 변수선언임. 앞으로 심볼테이블을 그릴 것.

 

 

동영상 8개 삽입 후 간단히 설명.. 왜 라인을 벗어나는가?