[디버깅] 메모리 디버깅(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 |