본문 바로가기

.NET/Debugging

(35)
브라우저에 있는 툴을 사용해서 디버깅하기 난 닷넷 개발자이다. 웹을 개발하다 보면 프론트 단에 스크립트 디버깅을 할때가 많다. 여기서 간단하게 스크립트 디버깅 팁을 설명하려한다. 매우 짧고 간단하다.. 우선 디버깅할 페이지를 띄운다. 간단하게 여기서는 로그인 폼체크를 하겠다. 로그인 버튼을 누를대 실행하는 스크립트를 찾는다. 위에 그림에서는 checkLogin()함수를 호출하고 있다. Script 탭으로 위의 그림처럼 이동을 하자. 위의 빨간 부분에 실행할 자바스크립트를 checkLogin() 입력하고 Enter를 누른다. 그러면 자바시크립트가 실행이된다. 호호 쉽다.
주저리주저리 디버깅 오늘은 일이 잘 안되네 마음잡기가 힘들다. 머리가 멍하고 거의 움직이지 않으니 허리도 아파고 머리를 식히고자 글을 한번 써본다. 비쥬얼 스튜디오를 이용한 디버깅을 간단하게 소개하고자 한다. 지금 현재 클래스에 있는 필드들을 알아보자. 콘솔어플리케이션을 만들어 보자. 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 참조 그래프를..
Advanced Debugging (메모장) CommandLine: notepad.exe … … … ntdll!DbgBreakPoint: 7c90120e cc int 3 0:000> .symfix No downstream store given, using c:\Program Files\Debugging Tools for Windows\sym 0:000> .reload Reloading current modules .............. 0:000> X notepad!*Save* 01001a28 notepad!NpSaveDialogHookProc = 0100270f notepad!CheckSave = 0100a528 notepad!g_ftSaveAs = 01003a39 notepad!SaveGlobals = 010012e4 notepad!_imp..
sosex.dll 다운받기 (디버깅) http://www.stevestechspot.com/SOSEXV40NowAvailable.aspx
Windbg툴로 관리힙 메모리 디버깅하기 2 http://blogs.msdn.com/b/alejacma/archive/2009/08/13/managed-debugging-with-windbg-managed-heap-part-2.aspx 이 내용은 위의 기사를 토대로 구성되었으며 상이한 내용이 있을 수 있습니다. Heap 메모리에 object들을 한번 보죠 여기서 우리는 heap안에 모든 object들을 볼수 있습니다. 0:004> !DumpHeap Address MT Size 7b463c40 790fd0f0 12 7b463c4c 790fd8c4 36 7b463c70 790fd8c4 20 ... 01905378 79119a1c 32 ... 02907de0 003d6d48 16 Free total 12400 objects Statistics: MT C..
Windbg툴로 관리힙 메모리 디버깅하기 1 http://blogs.msdn.com/b/alejacma/archive/2009/08/13/managed-debugging-with-windbg-managed-heap-part-1.aspx 이 내용은 위의 기사를 토대로 만들어 졌습니다. 다소 상이한 부분이 있을수 있습니다. 이미지는 그대로 썼습니다. .NET 는 NT Heap을 사용하지 않고 대신에 고유의 managed heap을 씁니다. 모든 Object들은 managed heap안에서 GC에 의해 0세대 1세대 2세대로 관리됩니다. 모든 object는 처음에 0세대로 시작을 합니다. 단 85,000bytes 이상인 object들은 Large Object Heap(LOH)에 관리됩니다. 85,000bytes라는 사이즈는 실제적인 object사이즈 즉..