더북(TheBook)

그러면 프로그램이 실행되다 디버거가 일시 정지시킵니다. 이 상태에서 Debug 메뉴 아래에 있는 호출 스택(Call Stack) 항목을 봅시다.

▲ 그림 1-8 디버거의 호출 스택

 

그림 1-8과 같이 현재 실행되고 있는 지점을 확인할 수 있습니다. 호출 스택의 func2()main()을 더블클릭하면 각 함수를 호출하기 직전에 실행되던 지점을 가리킬 것입니다.

호출 스택 안에는 각 함수 안에 선언된 지역 변수(또는 로컬 변수(local variable))도 같이 들어 있습니다.

각 스레드는 실행 지점이 서로 다를 수밖에 없습니다. 스레드를 실행할 때는 그 스레드가 최초로 실행할 함수를 지정하는데, 이때 함수가 서로 다르기 때문입니다. 같은 함수를 실행한다 하더라도 그 함수에 넘긴 인자나 메모리 상태 등이 다르므로 결국 다른 실행 지점을 가리킬 수밖에 없습니다. 심지어 같은 함수, 같은 인자, 메모리 상태까지 모두 동일하더라도 실행 지점은 약간 차이가 생기기도 합니다(그 이유는 이 장을 끝까지 읽으면 알 수 있습니다).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.