본문 바로가기

Debugging

(3)
주저리주저리 디버깅 오늘은 일이 잘 안되네 마음잡기가 힘들다. 머리가 멍하고 거의 움직이지 않으니 허리도 아파고 머리를 식히고자 글을 한번 써본다. 비쥬얼 스튜디오를 이용한 디버깅을 간단하게 소개하고자 한다. 지금 현재 클래스에 있는 필드들을 알아보자. 콘솔어플리케이션을 만들어 보자. 1. 위와 같이 콘솔 어플리케이션을 만들어보자. 2. Person 클래스를 만들고 Main 메서드 안에 객체를 하나 만들어보자. 3. 디버깅 프로퍼티에서 Enable unmaged code debugging을 체크하자. 4. 직접실행 창에 .load sos 디버깅할수있게 해주는 sos.dll를 로드하고 !dumpheap -stat 명령어를 쳐보자. managed heap에 로드된 객체(6332)들이 무수히 많음을 볼수 있다. 명령어는 msdn..
NTSD로 !dumpheap의 type 스위치 쓰기 ntsd로 디버깅을 걸로 application 을 실행시킵니다. 그리고 loadby sos.dll mscorwks로 호출해서 sos extension을 사용해 현재 사용되고 있는 memory heap의 덤프를 봅니다. 여기서 스위치를 -type으로 해서 원하는 type을 스위치 파라미터로 넣어줍니다. !dumpheap -type AAA.BBB.Mobile 위와같이 하면 그 타입에 대한 메모리 정보를 알수 있습니다. 끝... !dumpheap의 스위치로서는 아래를 참조해 주세요 스위치 설명 -stat Limits output to managed heap statistics -strings Limits output to strings stored on the managed heap -short Limits ..
Windbg툴로 관리힙 메모리 디버깅하기 3 http://blogs.msdn.com/b/alejacma/archive/2009/08/13/managed-debugging-with-windbg-managed-heap-part-3.aspx 이글은 위의 내용을 토대로 했습니다. 위 내용과 상이한 부분이 있을수 있습니다. 이 장에서는 어던 object들이 어떤 object들을 참고하고 있는지 보도록 하겠습니다. 우리가 생각하기에 저 object들은 힙에서 없어져야하는데 왜 아직까지 남아있지 하는 그런 object들을 심심치 않게 볼수 있다. 왜냐면 뭘까요? 그건 다른 object들이 아직 그 object들을 참조하고 있을 거기 때문에 GC가 쓰레기 수집을 하지 않은것입니다. GC는 application root라는 곳으로 시작해 object 참조 그래프를..