Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  메모리를 열라 많이 쓰는 놈을 찾아 볼까? 
작성일시 : 2010. 7. 8. 15:16 | 분류 : Windows Server/ETC

될지 안될지는 모르겠지만, 이번 주에 고객사 가서 한번 해볼 Action Plan 입니다.
.net Debugging 은 제 Role 도 아니고 해본 적도 없지만…

1. 사전 준비
먼저 sos.dll 이랑 프라이빗 심볼을 로드하고 나서, !dumpheap 를 통해 메모리를 열라 많이 쓰는 놈들이 찾습니다.

2. 많이 쓰는 놈의 형식 및 method table 찾기
메모리 많이 쓰는 놈의 주소를 확인 한 다음 !dumpheap –stat 주소 를 통해 method table 을 확인 합니다.

3. 오브젝트 찾기
method table을 찾았으면 !dumpmt –md method table 을 통해서 내용을 확인 합니다.
여기까지 진행 되면 대충 managed code 를 찾을 수 있을 꺼 같습니다.

4. BP 포인트 찾기
이제 method desc 를 확인 하고, 확인 되는  method desc에 !bpmd –md MethodDesc 를 통해서 브레이크 포인트를 겁니다.

5. 분석하기
이제 프로그램을 다시 디버깅 모드로 실행 시키고 아까 방법으로 BP를 겁니다. BP에 걸렸으면 !clrstack –P 를 통해 현재의 call stack 을 확인 합니다.
뭐 !clrstack –a 로 확인해도 좋겠군요. (로컬 변수까지 확인) 그런 다음에 !objsize 주소 를 통해서 사이즈를 확인 할 수도 있군요.

6. 딱 걸렸다 이놈아!
콜 스텍에서 확인 되는 메계 변수의 내용을 !do 메개변수 를 통해 확인 합니다. 이 녀석이 클래스가 아니고 int 같은 변수형이라면 않나올 수도…

이 정도면 메모리 릭정도는 확인 할 수 있겠죠?

|