본문 바로가기

.NET/Debugging

(35)
Windbg를 사용하기 .NET Breakpoint 설정하기 http://blogs.msdn.com/b/kristoffer/archive/2007/01/02/setting-a-breakpoint-in-managed-code-using-windbg.aspx 위에서 퍼온 글입니다. One of the great features of managed code is getting call stacks and proper class and member function names without debug symbols. We can examine the methods of a class and set breakpoints based on name. To see the methods on an object in Windbg we first need to find its meth..
Windbg로 닷넷 Exception 메모리 덤프뜨기 Since a .net exception is a .NET object like any other, it gets stored on the GC heap when you (or some code you call) calls new XXException(). This means that if you have a memory dump of a process you can dump out all the recent exceptions that have occurred, or rather all exceptions that have not yet been garbage collected, which will give you a good feel for what exceptions occurred recently..
windbg 의 mscordacwks DLL 로드 문제 [출처] windbg 의 mscordacwks DLL 로드 문제|작성자 techshare http://blog.naver.com/techshare/100144174167 위에서 퍼온 글입니다. 예전에 mscordacwks.dll 의 로드 문제에 대해서 한번 이야기를 한 적이 있었는데요. Windbg - ERROR: Unable to load DLL mscordacwks_x86_x86_2.0.50727.4200.dll, Win32 error 0n2 ; http://www.sysnet.pe.kr/2/0/994 최근에, 다시 한번 그 문제를 보게 되었습니다. 특이한 점은, dmp 파일을 받은 바로 그 컴퓨터에서 "Debug Diagnostics Tool" 을 실행했는데도 발생했다는 점입니다. 반면, 공통점이 있다면 이번에도 예전의 그 컴퓨터와 동일하게 "Windows Server 2008 SP2"..
.NET 참조 개체 인스턴스의 SyncBlock 을 확인하는 방법 http://blog.naver.com/techshare/100143525064 위의 글을 퍼온글입니다. 사실, 원래는 StringBuilder 에서 OutOfMemoryException 의 원인만 밝히려고 했는데 쓰다 보니 궁금함이 꼬리를 물어서 이렇게 이야기가 길어졌군요. ^^ StringBuilder 에서의 OutOfMemoryException 오류 원인 분석 ; http://www.sysnet.pe.kr/2/0/1171 windbg - 힙에서 .NET 타입에 대한 배열을 찾는 방법 ; http://www.sysnet.pe.kr/2/0/1172 .NET Array는 왜 12 bytes 의 기본 메모리를 점유할까? ; http://www.sysnet.pe.kr/2/0/1173 일반 참조형의 메모리 소..
일반 참조형의 기본 메모리 소비는 얼마나 될까요? [출처] 일반 참조형의 기본 메모리 소비는 얼마나 될까요?|작성자 techshare http://blog.naver.com/techshare/100143356959 위의 글을 퍼왔습니다. 지난 번 글을 통해서, 배열과 관련된 인스턴스의 메모리를 살펴보는 방법을 알아봤습니다. .NET Array는 왜 12 bytes 의 기본 메모리를 점유할까? ; http://www.sysnet.pe.kr/2/0/1173 Primitive 타입의 배열은 12 bytes, 기타 배열의 경우에는 Element Type 의 MT 값 - 4 bytes 를 포함해서 16 bytes가 기본소비되는 데요. 그렇다면 일반적인 클래스의 경우에는 얼마나 메모리를 소비할까요? 처음 이 의문이 들었을 때, 저는 간단하게 8 bytes 라고 생각했습니다. 왜냐 하면, ^^ 배열과 비교해서 '요소 수'로 할당된 4 bytes 가..
StringBuilder 에서의 OutOfMemoryException 오류 원인 분석 [출처] StringBuilder 에서의 OutOfMemoryException 오류 원인 분석|작성자 techshare http://blog.naver.com/techshare/100143103587 위의 링크에서 퍼온글입니다. 오늘 재미있는 글을 하나 읽었습니다. .NET의 StringBuilder 클래스.. 너무해.. ; http://madchick.egloos.com/1480819 현상을 봐도, 좀 너무하긴 한 것 같습니다. OOM 오류가 발생한다는 것은 그리 달가운 일이 아니니까요. ^^ 하지만, 그 원인이 매우 궁금해지더군요. 명색이, 그래도 제가 성능관리 도구를 만드는 회사에 다니는데 원인 분석이 안되면 좀 서운하지 않겠어요? ^^ 우선, 문제 재현을 할 수 있도록 프로그램(CLR 4 / x86)을 만들었습니다. static void Test() { StringBuilder sb = new StringBuild..
windbg - 힙에서 .NET 타입에 대한 배열을 찾는 방법 [출처] windbg - 힙에서 .NET 타입에 대한 배열을 찾는 방법|작성자 techshare http://blog.naver.com/techshare/100143182037 위의 링크에서 퍼온글입니다. .NET 입장에서, 배열은 결국 System.Array 를 상속받은 개체로 다뤄집니다. 지난 번 이야기에서 "System.Char[]" 개체가 "dumpheap -stat" 명령으로 확인되었던 것을 볼 수 있었는데요. StringBuilder 에서의 OutOfMemoryException 오류 원인 분석 ; http://www.sysnet.pe.kr/2/0/1171 Primitive 타입에 대한 배열은 그렇다 치고, 기타 타입들에 대한 배열은 "dumpheap -stat"에서 직접적으로 보이지 않습니다. 이에 대한 이해를 돕기 위해 예제를 다뤄볼까요? namespace ConsoleApplicati..
Networking Packet 정보를 보고 새로 알았다. 마소의 네트워크 모니터링 툴을 설치하고 TCP/IP의 통신 패킷을 지켜봤다. (오전에 괜히 일하기 싫어섴ㅋ) 새로운 사실을 알았다. 브라우저를 열고 통신 패킷들을 봤다. 엉 이런 destination port와 source port가 둘다 80 인건 알고 있었는데.. 이런 좌적 나의 무식함이 또 한번 들통났다. 위의 그림에서 볼수 있듯이 DstPort(destination port)는 80을 가르키고 있다 하지만 SrcPort(내컴:Source Port)는 계속 변경이 됨을 알수 있다.. 참고로 맨위의 빨간색은 Request를 날리는 것이고 바로 밑의 것은 Response를 받는 부분이다 그리하여 DstPort와 Srcport가 바뀌었음을 알수있다. 이렇게 하나의 트랜잭션당 나의 포트는 바뀌어서 통신을 ..