#pragma managed 또는 #pragma unmanaged를 섞어가며 코드를 작성해 놓으면, 디버깅 중에 지금 보고 있는 코드가 CLR 코드인지, Native 코드인지 구분이 안 갈 때가 있다. 이런 경우엔 우선 로컬 변수의 초기화가 어떻게 되어 있나 보자.
int main() { int i; for(i = 0; i<100; i++) { ...... } ...... }
3번째 줄에 중단점을 선언해 놓고, 정수형 변수 i의 값을 확인해보자. CLR 코드라면 0으로 초기화되어 있을 테고, 그렇지 않으면 초기화되지 않은 이상한 값이 들어있을 것이다.
아니면 Watch 창에 &i를 추가해봐도 된다. Unmanaged 코드라면 Error: symbol "i" not found라는 경고 메시지를 보게 될 테고 그렇지 않다면 변수 i의 주소를 보게 될 것이다.
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.