[디버깅] 메모리 디버깅(VS2015)

2016. 1. 2. 05:42프로그래밍/ETC

728x90
728x90

메모리 디버깅 과정은

해당 자료의 포인터를 이용하여 해당 지점의 값이 변경되었는지를 확인하는 방법이다.

변경 시점을 예상하기 어렵거나 알 수 없는 지점에서 변경되어 버그가 생길 때 사용할 수 있다.

사실상 소규모 프로젝트에선 쓸 일이 거의 없겠지만

규모가 큰 프로젝트에선 가끔씩 쓸 일이 생길 수 있다.


과정

과정은 간단히 요약하면

중단점 걸기 -> 관찰 하고자 하는 자료의 포인터 알아내기 -> 해당 포인터로 중단점 걸기 -> 적중


중단점 걸기

그렇다. 중단점을 걸어야 데이터를 볼 수 있으니..

예제는 testData 백터에 0번째 값을 변경한다.



중단점 지정

조자식을 통해 testData의 0번째 데이터의 포인터를 얻을 수 있다.

0x00$$$$$$ 형태로 된 포인터를 복사해두고(메모장이나 직접 입력)


새로 만들기 -> 데이터 중단점을 클릭한다.(VS 버전에 따라 인터페이스가 조금씩 다를 수 있다.)




포인터로 중단점 걸기



그럼 이렇게 예쁘게 중단점이 잘 걸려있는 것을 확인할 수 있다.



적중

이제 디버깅을 하면 해당 포인터가 가르키는 곳의 데이터가 변경되면 적중 되었음을 알려준다.

10을 대입한 후 다음 줄에서 스샷처럼 띄워준다. 


* 위에서 사용했던 포인터가 다르다. 할당되는 메모리 위치는 가변적이므로 디버깅을 실패하면 다시 설정해주어야 하는 수고로움이 있다.

* 메모리 포인터 적중 스샷이 위의 스샷과 다른 것은 실수로 디버깅 종료를 하여 생긴 불상사라고 할 수 있다.



728x90
반응형

'프로그래밍 > ETC' 카테고리의 다른 글

[WinDbg] 개론  (1) 2016.01.20
[erlang, notepad++] erlang 플러그인 설치  (2) 2016.01.03
[디버깅] 조건 디버깅(VS2015)  (3) 2016.01.02
[erlang] 예외  (2) 2015.12.23
[erlang] 순차 프로그래밍  (0) 2015.12.16
MySql 연결하기  (2) 2015.08.27
딱딱한 페이지 그만(작성중)  (2) 2015.08.24