본문 바로가기
카테고리 없음

visual studio 디버깅(메모리 디버깅)

by 코드덕후 2022. 8. 13.
728x90

지난번에는 초보자를 위한 기초 디버깅에 대해서 글을 올렸는데요 아래는 이제 한단계 나아가서 메모리로 하는 디버깅입니다.

디버깅에는 메모리/조건식/원격디버깅등 많은 기법들이 있습니다. 그중에 이번에 소개하는 메모리 디버깅은 값이 변화할때 자동으로

감지해서 브레이크를 걸어줍니다.

 

아래는 지식백과에 올렸던 글입니다.

 

안녕하세요 주소값으로 디버깅하는 방법에 대해서 말해보고자 이렇게 집필을 하게되었습니다. 

 

비쥬얼 스튜디오로 작업을 하다보면 값이 이상하게 바뀌는 현상이 발생하는 경우를

아주 빈번히 보게 됩니다.

 

해당 변수의 값이 바뀌었는데 이값이 어디서 분명히 바껴서 문제가 발생하는데 오류를 찾지못하고

 

헤맬때가 종종 있습니다.

 

디서 바꼈는지 아무리 뒤져바도 잘 찾지 못할때가 존재합니다

 

전역변수일 경우는 아주 심각하게 나타나게 될 때가 있습니다.

 

이때 적용해 볼수 있는것이 메모리(주소)디버깅 방법입니다.

 

아시는 분은 아시겠지만 아직도 잘 모르시는 분들이 있어서 같이 공유하고자 올리게 되었습니다.

 

 

아래 그림 처럼 빨간공(브레이크포인트)를 걸면 우리가 알고자 하는 곳에서 멈추게 됩니다.

 

 

 

 그러면 우리가 알고싶은 변수를 조사식으로 끌어내립니다. 조사식은 더블 클릭하면 수식을 넣을수

있습니다. 그래서 거기에 아래 그림처럼 변수의 앞에 주소값을 의미하는 &연산자를 붙여줍니다.

그러면 오른쪽 값에 주소값이 나오게 됩니다.

포인터 변수는 이렇게 안해도 주소값이 나오게 되죠^^

 

 

그러면 이값을 전체 선택하고 Ctrl + C로 복사합니다. 그런후에 메모장을 켜고 (윈도우 + R 실행후 notepad)거기에 Ctrl + v합니다. 그러면 주소를 포함한 것들이 복사 되게 됩니다.

주소값만 따로 선택해서 기억해둡니다.

이주소를 가지는 값이 바뀌게 될때 브레이크 포인트가 자동으로 걸리게 하기 위함 입니다.

 

이렇게 준비가 완료되고 나면 이제 상단 메뉴들중 디버깅 창을 클릭합니다.

아래 그림을 보면 알수 있듯이

디버그 -> 새중단점-> 새데이터 중단점 순으로 들어가 클릭을 합니다.

 

 

 

이렇게 들어가면 아래와 같은 창이 뜨게 됩니다. 거기에 주소 라는 칸에

아까 기억해 두었던 주소를 넣어줍니다.

이렇게 하고 확인을 눌러주세요

 

 

이제 걸어두었던 브레이크 포인트를 지우고 F5를 눌러서 실행시켜줍니다.

처음 시작할때 한번은 해당 주소가 할당 되었을때 조사를 해야 그다음부터 해당 주소의 값이

변경 되거나하면 아래처럼 브레이크 포인트가 자동으로 걸리게 됩니다.

      

 

우리가 기억해 두었던 주소가 맞죠

이렇게 변경될때 알아서 걸어주기 때문에 값이 어디에서 변화하는지 찾지 못할때 유용하게 사용할 수 있습

니다.

 

하지만 항상 걸어 주는건 아니고 주소값이 튄다던가 이상하게 지워진다던가 하면 안걸릴때도 있지만

대체적으로 걸어줍니다.

 

아주 답답하고 힘들때 한번씩은 기억하고 써먹을수 있는 방법입니다.

 

다음에는 시간이 되면 조건부 디버깅에 대해서 올려 보도록 하겠습니다.

 

모두 버그에서 해방되는 그날까지^^

728x90
반응형
LIST

댓글