Welcome to MSDN Blogs Sign in | Join | Help

September 2008 - Posts

Network Troubleshooting 을 위한 Netmon

Microsoft Network Monitor 3.2 http://www.microsoft.com/downloads/details.aspx?FamilyID=f4db40af-1e08-4a21-a26b-ec2f4dc4190d&DisplayLang=en   Server 의 문제점들을 분석 하다 보면 각각의 Server 나 Client 들 사이에 지나가는 Network packet 을 확인해야 할 경우가 많이 있습니다. 이 경우 Microsoft
Posted by DebugMachine | 1 Comments

Windows 가 어떻게 종료 되는가?

"이 문서는 http://blogs.msdn.com/ntdebugging blog 의 번역이며 원래의 자료가 통보 없이 변경될 수 있습니다. 이 자료는 법률적 보증이 없으며 의견을 주시기 위해 원래의 blog 를 방문하실 수 있습니다. ( http://blogs.msdn.com/ntdebugging/archive/2007/06/09/how-windows-shuts-down.aspx )" Windows 가 어떻게 종료 되는가? 저의
Posted by DebugMachine | 2 Comments

Crash Dump Analysis Patterns (Part 14)

Crash Dump Analysis Patterns (Part 14) 번역: 김희준( drost@naver.com , http://insidekernel.net )   다음 패턴은 높은 CPU 점유율 스레드(Spiking Thread) 입니다. 만약 여러분이 고객으로부터 여러 스레드가 실행중인 프로세스 덤프를 받았고, 어떤 스레드가 CPU의 대부분 점유하고 있는지 찾아내기 어려울 때 높은 CPU 점유율의 스레드ID나 프로세스ID를 보여주는
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 13b)

Crash Dump Analysis Patterns (Part 13b) 번역: Heejune Kim (2007-12-10, drost@naver.com , http://insidekernel.net )   만약 OS가 할당된 구조체들을 가리키고 있는 핸들이 있다면 때로는 핸들 누수로 인해 메모리 부족을 불러 일으키기도 합니다. 다음은 서버를 멈춰버린 핸들 릭의 전형적인 예입니다. 전체 메모리 덤프는 non-paged pool이 고갈돼버린
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 13c)

Crash Dump Analysis Patterns (Part 13c) 번역: 김희준( drost@naver.com , http://insidekernel.net )   핸들 릭이 메모리 풀 부족을 불러 일으키기도 하지만, 많은 드라이버들은 자신만의 private 메모리를 할당하여 4글자로 된 ASCII 태그를 할당합니다, 예를 들어서 제 x64 Vista 워크스테이션의 non-paged 풀의 경우에는 : lkd> !poolused
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 5b)

Crash Dump Analysis Patterns (Part 5b) 번역: Heejune Kim ( http://insidekernel.net , drost@naver.com ) 번역일: 2007-11-13   이번에는 이전에 작성했던 최적화된 코드 패턴(Optimized Code Pattern) 의 다음 내용입니다. OMAP 코드 최적화라고 불리는 이것은 초보자를 종종 당황케 합니다. 메모리에 코드가 작게 올라가야 할 때 사용됩니다.
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 12)

Crash Dump Analysis Patterns (Part 12) 번역: Heejune Kim ( http://insidekernel.net , drost@naver.com ) 번역일: 2007-11-13   크래쉬 덤프에서 자주 발생하는 다른 패턴은 컴포넌트 심볼 없음(No Component Symbols) 패턴입니다. 이 경우에 컴포넌트가 어떤 일을 하는가는 그것의 이름이나, 호출된 전체 스레드 스택, import table들을
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 11)

Crash Dump Analysis Patterns (Part 11) 번역: Heejune Kim ( http://insidekernel.net drost@naver.com ) 번역일: 2007-11-07   초보자들이 자주 범하는 실수 중의 하나가 스택 트레이스를 보여주는 명령어인 WinDbg의 !analyze 나 kv 명령을 신뢰하는 것입니다. WinDbg는 툴일 뿐이고, 때로는 올바른 스텍 트레이스를 하는데 필요한 크리티컬한 정보가
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 10)

Crash Dump Analysis Patterns (Part 10) 번역: 김희준 ( drost@naver.com , http://insidekernel.net ) 번역일: 2007-11-01   때로는 운영체제 버전을 바꾸거나 후킹 소프트웨어 설치하는 것이 기존에는 완벽하게 동작하고 있었던 소프트웨어에서의 숨겨진 버그를 찾아내기도 합니다. 새로운 소프트웨어를 설치하면 어떤 일이 벌어질까요? 프로세스 덤프를 살펴보시면 그들만의 특정한
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 9c)

Crash Dump Analysis Patterns (Part 9c) 번역: 김희준 (Heejune Kim, drost@naver.com , http://insidekernel.net ) 작성일자: 2007-10-17   이번에는 이벤트와 크리티컬 섹션과 같은 동기화 객체들이 함께 섞여서 사용된 데드락 패턴의 다른 변형된 버전입니다. 이벤트는 큐에 데이터가 있어서 work item을 처리 가능하다는 상황을 알릴 때 사용할 수 있고, 크리티컬
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 9b)

Crash Dump Analysis Patterns (Part 9b) 원문링크: http://www.dumpanalysis.org/blog/index.php/2007/07/03/crash-dump-analysis-patterns-part-9b/ 번역: 김희준 ( Heejune Kim, drost@naver.com , http://insidekernel.net , 2007-09-01 )   지난번 데드락 패턴에 이어지는 내용입니다. 이번
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 9a)

Crash Dump Analysis Patterns (Part 9a) 원문 링크: http://www.dumpanalysis.org/blog/index.php/2007/02/09/crash-dump-analysis-patterns-part-9a/ 번역: 김희준( Heejune Kim, drost@naver.com , http://insidekernel.net , 2007-08-27 )   이번 패턴은 데드락입니다. 데드락이 뭔지 모르신다면
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 8)

Crash Dump Analysis Patterns (Part 8) 원문 http://www.dumpanalysis.org/blog/index.php/2007/02/02/crash-dump-analysis-patterns-part-8/ 번역 김희준( drost@naver.com , http://insidekernel.net , 2007-08-14)   오늘 설명드릴 패턴은 숨겨진 예외(Hidden Exception) 라고 하는 것입니다.
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 7)

Crash Dump Analysis Patterns (Part 7) http://www.dumpanalysis.org/blog/index.php/2007/01/24/crash-dump-analysis-patterns-part-7/ 번역: 김희준(2007-08-04, drost@naver.com , http://insidekernel.net )   불완전한(inconsistent) 덤프를 만들어내는 툴들이 많이 있습니다. 예를 들자면, sysinternals.com에서
Posted by DebugMachine | 1 Comments

[Debugging Toolbox]Special Command—Execute Commands from a Customized User Interface with .cmdtree

"이 문서는 http://blogs.msdn.com/debuggingtoolbox blog 의 번역이며 원래의 자료가 통보 없이 변경될 수 있습니다. 이 자료는 법률적 보증이 없으며 의견을 주시기 위해 원래의 blog 를 방문하실 수 있습니다. ( http://blogs.msdn.com/debuggingtoolbox/archive/2008/09/17/special-command-execute-commands-from-a-customized-user-interface-with-cmdtree.aspx
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 6)

잘못된 포인터를 드라이버에 사용한다면, 당연히 bug check가 뜨게 되겠지요? 이번 6번째 글에서는, 그 잘못된 주소가 가르키는 영역이 유저 공간이냐, 커널 공간이냐에 따라 다른 bug check가 뜬다는 사실에 대해서 언급하고 있습니다. 도움이 되길 바랍니다. Crash Dump Analysis Patterns (Part 6) 번역: 김희준( drost@naver.com , http://insidekernel.net , 2007-06-28)
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Pattern (Part 5)

다섯번째 크래쉬 덤프 패턴은 최적화된 코드 패턴입니다. 아래는 번역 내용입니다. --- Crash Dump Analysis Pattern (Part 5) 원문: http://www.dumpanalysis.org/blog/index.php/2006/12/15/crash-dump-analysis-patterns-part-5/ 번역: 김희준( http://insidekernel.net , drost@naver.com , 2007-06-16)  
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 4)

Crash Dump Analysis 네번째 패턴에 대한 번역입니다. 간략히 설명을 드리자면, Part 4는 접하게 되었을 경우 선택의 여지가 별로 없는 상황입니다. Lateral Damage 패턴이라고 하는데, 받은 덤프에서 봐야할 중요 데이터들이 손상된 상황에서는 한번 다른 컴포넌트들(드라이버 후킹)을 살펴보라고 조언합니다. Crash Dump Analysis Patterns (Part 4) 원문링크 번역: 김희준( http://insidekernel.net
Posted by DebugMachine | 1 Comments

Crash Dump Analysis Patterns (Part 3) – False Positive Dump

Crash Dump Analysis Patterns (Part 3) – False Positive Dump http://www.dumpanalysis.org/blog/index.php/2006/11/01/crash-dump-analysis-patterns-part-3/ 제가 자주 접하는 또 다른 패턴은 False Positive Dump 라고 하는 것입니다. 잘못된 곳을 가리키고 있거나 분석에 도움이 되지 않는 덤프를 받는 경우입니다.
Posted by DebugMachine | 0 Comments

[CDA]WinDbg Script #1 (프로세스 실행파일 경로 구하기)

http://www.dumpanalysis.org/blog/index.php/2006/08/ 글 : Dmitry Vostokov 옮김 : 이태화 (2007-05-11) CDA 블로그에 있는 Windbg 스크립트를 실행시켜 보았습니다. 먼저 아래 스크립트를 windbg 폴더에 myscrypts 라는 폴더를 만들어서 CDA_script.txt 로 저장하고 windbg 로 target 에 붙인 후에 .cache forcedecodeuser 명령을 실행
Posted by DebugMachine | 1 Comments

크래쉬 덤프 분석 패턴 (Part 2)

http://www.dumpanalysis.org/blog/index.php/2006/10/31/crash-dump-analysis-patterns-part-2/ 글 : Dmitry Vostokov 번역 : 김희준 (2007-04-27, drost@naver.com) 크래쉬 덤프 분석 패턴 (Part 2) 이번에 소개하려는 패턴은 Dynamic Memory Corruption(Heap Corruption이나 Pool Corruption이라고 불리기도
Posted by DebugMachine | 1 Comments

크래쉬 덤프 분석 패턴 (Part 1)

CDA (Crash Dump Analysis) 출처(source) - http://www.dumpanalysis.org/blog/index.php/2006/10/30/crash-dump-analysis-patterns-part-1/ 번역(translation) – 김희준( http://insidekernel.net , drost@naver.com ) 크래쉬 덤프 분석 패턴 (Part 1) 크래쉬 덤프 분석만을 3년 넘게 해오다가, 제
Posted by DebugMachine | 2 Comments

BSOD 분석에 대한 인터뷰

Daniel Pearson : Debugging a Windows Blus Screen of Death. http://channel9.msdn.com/posts/Dan/Daniel-Pearson-Debugging-a-Windows-Blue-Screen-of-Death/   Microsoft 의 Dev lead 인 Daniel Pearson 이 Dump 분석하는 방법에 대해서 이야기 해 줍니다. Windows architecture, Pool
Posted by DebugMachine | 1 Comments

Advanced Windows Debugging 저자 인터뷰

Advanced Windows Debugging 저자 인터뷰 http://channel9.msdn.com/posts/Charles/Advanced-Windows-Debugging-An-Introduction/   Microsoft 의 직원 중 두 명이 작성한 Advanced Windows Debugging 이라는 아주 좋은 책이 있습니다. 이 책의 저자들의 인터뷰 동영상이 Channel9 에 올라 왔습니다. 자신들의 기술을 나중에 들어온
Posted by DebugMachine | 1 Comments

Hresult 값을 Win32 Error code 로 변환하기

Windows 의 Error Code 를 확인 하다 보면 COM 과 같은 것의 경우 Win32 Error code 가 아닌 Hresult 를 사용하는 것을 볼 수 있습니다. 이 때 이 값만 가지고는 어떤 Error 인지 확인하기 힘든데 다음 방법을 사용하면 손쉽게 Win32 Error 인지 확인할 수 있습니다. 예) 0x80070057 첫 번째 8은 Error 를 의미하고 007 은 Win32 Error 임을 의미하고 0057d은 Win32 Error
Posted by DebugMachine | 1 Comments

[WinDbg command]!poolused 8

!poolused 명령을 사용하면 Pool tag 별로 pool 의 사용량을 확인할 수 있습니다. (Windows 2003 의 경우 pooltag 가 default 로 Enable 이고 Windows 2000 의 경우 Disable 되어 있는데 Gflags.exe 를 사용하여 Enable 할 수 있습니다. ) 일반적으로 !poolused 2 와 !poolused 4번은 많이 사용하는데 Session pool 즉 하나의 logon session 에서
Posted by DebugMachine | 1 Comments

[ntdebug]GUI hang 이 발생한 Windows application 찾고 dump 하기

"이 문서는 http://blogs.msdn.com/ntdebugging blog 의 번역이며 원래의 자료가 통보 없이 변경될 수 있습니다. 이 자료는 법률적 보증이 없으며 의견을 주시기 위해 원래의 blog 를 방문하실 수 있습니다. ( http://blogs.msdn.com/ntdebugging/archive/2007/05/29/detecting-and-automatically-dumping-hung-gui-based-windows-applications.aspx
Posted by DebugMachine | 1 Comments

FastMutex 의 동작방식

FastMutex 는 초기화 시에 count 값이 1으로 설정되고 동기화를 위한 동기 Event 하나를 생성한다. Acuier 하게 되면 Count 값이 1 감소하고 이 값이 0 이면 Mutex 를 얻게되고 0 이 아닐 경우 Wait 에서 대기하게 된다. Release 에서는 Count 값을 1 증가 시킨다. typedef struct _FAST_MUTEX { #define FM_LOCK_BIT         
Posted by DebugMachine | 0 Comments

제가 나름대로 정리해본 Physical Memory 와 Virtual Memory 에 대한 내용

페이징 페이지 테이블 : 프로세스의 메모리가 실제 메모리와 어떻게 매핑되어 있는지를 나타내는 정보 목록 페이지 테이블 중 페이지 디렉토리만 메모리에 올려놓고 페이지 테이블 인덱스는 필요시에만 올려 놓음 CR3 레지스터 사용하여 Page directory 의 address 를 구한다.   세그먼트 동일한 속성을 가지는 data 영역으로 메모리를 나눠서 관리하는 방식 세그먼트는 세그먼트 디스크립터 테이블을 참조하여 해당 세그먼트의 시작 주소를
Posted by DebugMachine | 0 Comments

Windows NT 를 만든 사람들...

간만에 글을 써보는 군요 Windows NT 를 만든 사람에 대해서 궁금해서 구글을 하다가 우연하게 중국블로그에서 재미있는 내용을 찾았습니다. 중국어를 바로 볼 수 없어서 자동 번역기를 사용해서 영어로 번역했어요 여러분도 한번 읽어보세요 ^^ 원문 http://www.xuyibo.org/article/31.htm NT team: Dave Cutler (KE) Dave Cutler (KE) Lou Perazzoli (MM) Lou Perazzoli
Posted by DebugMachine | 0 Comments

[WinDbg Command]!drvobj

!drvobj 명령을 사용하면 특정 DriverObject 의 정보를 볼 수 있습니다. Windows 2000 이상의 경우 Driver 의 이름만 알고 있다면 정보를 볼 수 있습니다. 특정 Driver 가 Hook 되어 있는지를 알고자 할때 아래의 명령을 사용하면 해당 Driver 의 Major Function 이 올바른지 확인할 수 있습니다. lkd> !drvobj ntfs 2 Driver object (89ae3888) is for: ***
Posted by DebugMachine | 0 Comments

Pool 부족시 유용한 명령어들

메모리 할당 관련 에러가 발생할 경우 찾아볼 수 있는 명령 Server 운영체제에서 Kernel Module 을 개발하다 보면 메모리 할당에 실패하는 경우가 간혹 나타난다. 이때 어떤 Module 이 메모리를 많이 사용하는지 아니면 다른 것 때문에 메모리 할당이 실패하는지 구분하기 힘들때가 있다. 이때 유용한 몇가지 명령을 알아보자.   !vm Virtual memory 의 현황을 알려준다. 메모리 부족 현상이 발생하였을 경우 우선적으로
Posted by DebugMachine | 1 Comments

[Debugging Toolbox] Extracting Performance Monitor counters from .NET application

http://blogs.msdn.com/debuggingtoolbox/archive/2007/04/19/windbg-script-extracting-performance-monitor-counters-from-net-application.aspx 글 : Roberto Alexis Farah 번역 : 이태화 ASP.NET 에서 발생한 dump를 분석하면서 Performance Monitor log 를 얻는 것을 잊어버린던 경험이 있을 겁니다. 여러분이
Posted by DebugMachine | 0 Comments

[Debugging Toolbox] Tracing API calls

http://blogs.msdn.com/debuggingtoolbox/archive/2007/04/14/windbg-script-tracing-api-calls.aspx 글 : Roberto Alexis Farah 번역 : 이태화 이것은 매우 간단한 script 입니다만 매우 강력한 script 입니다. 여러분은 application 이 사용하는 api 들을 다른 tool 을 사용하지 않고 Windbg 를 사용해서 보실 수 있습니다. API 에
Posted by DebugMachine | 0 Comments

[Tools]Logger.exe, Logviewer.exe

  WinDbg 를 설치하면 좋은 툴들이 많이 들어있습니다. Application 의 API 호출을 알고자 할때 API 모니터링 툴들을 많이 사용하시는데 WinDbg 의 Logger 를 사용하시면 동일한 효과를 볼 수 있습니다. 사용법은 logger.exe notepad.exe 와 같이 프로그램 이름을 주시면 실행되면서 바로 로그를 생성하게 됩니다. 생성된 로그는 바탕화면에 logexts 라는 폴더에 생성되며 logviewer.exe 로
Posted by DebugMachine | 0 Comments

[Debugging Toolbox]Playing with Notepad

http://blogs.msdn.com/debuggingtoolbox/archive/2007/04/11/windbg-script-playing-with-notepad.aspx 글 : Roberto Alexis Farah 번역 : 이태화 역자 : 해당 script 를 실행시켜 봤는데 잘 실행되지 않네요 ^^; 이것은 오직 저의 재미를 위해서 만든 script 입니다. 이것은 매우 simple 하고 약간의 제약사항이 있지만 재미 있습니다. 이것이 어떤
Posted by DebugMachine | 0 Comments

[Tools]Winerror.exe

안녕하세요 오늘은 wdk 안에 들어 있는 툴을 하나 소개해 드리도록 하겠습니다. Filter Driver 를 작성하다 보면 NTSTATUS 로 어떤 Error 를 설정해야 Win32 Error 가 나타나게 될지 고민하는 경우가 있습니다. MSDN 에 자료가 있기는 하지만 찾는것이 귀찮을 경우가 있습니다. 이럴때 wdk 안에 있는 툴을 사용하면 좋습니다. 사용법은 간단 합니다. winerror.exe errorcode ... [-s ntstatus
Posted by DebugMachine | 0 Comments

[Debugging Toolbox]Retrieving queries/stored procedures from .NET application

  http://blogs.msdn.com/debuggingtoolbox/archive/2007/04/04/windbg-script-retrieving-queries-stored-procedures-from-net-application.aspx 글 : Roberto Alexis Farah 번역 : 이태화 .NET Application 을 디버깅 할때 .NET Application 으로부터 queries/stored procedure 들을
Posted by DebugMachine | 0 Comments

[Debugging Toolbox]Connections from Pool

http://blogs.msdn.com/debuggingtoolbox/archive/2007/03/31/windbg-script-connections-from-pool.aspx 글 : Roberto Alexis Farah 번역 : 이태화 만약 여러분이 저와 같다면 특정 정보를 찾으려 할때 calss 나 namespace 를 잊어 버리곤할 것입니다. 아니면 찾고자 하는 field 이름을 잊기도 할 것입니다. 예를 들면 저는 System.Data.SqlClient
Posted by DebugMachine | 0 Comments

[Tools]Dumpchk.exe

Dumpchk.exe 덤프파일이 생성되면 이를 분석해야 하는데 고객지원팀이나 SE 조직에서는 Dumpfile 을 Windbg 로 열어서 분석하는 것이 현실적으로 어렵습니다. 이때 사용하면 좋은 Tool 이Dumpchk.exe 입니다. windbg 를 설치하면 같이 설치됩니다. Dumpchk.exe 는 windbg 로 dump file 을 열어서 !analyse -v 로 분석을 하는 것과 같은 내용을 output 으로 제공합니다.   명령은
Posted by DebugMachine | 0 Comments

[Debugging Toolbox]Playing with Minesweeper

[DT]Playing with Minesweeper http://blogs.msdn.com/debuggingtoolbox/archive/2007/03/28/windbg-script-playing-with-minesweeper.aspx 글 : Roberto Alexis Farah 번역 : 이태화 오늘은 디버깅 이슈가 아니고 지뢰찾기를 가지고 장난을 치는 내용입니다. 첫째, 이 script 는 부정한 목적으로 만든것은 아닙니다. 지뢰찾기와도 동작하지만,
Posted by DebugMachine | 0 Comments

[WinDbg Command].lines

디버깅을 하다 보면 source level 에서 하지 않고 asm level 에서 진행을 하고 싶을 때가 있습니다. 이때 심볼과 소스를 맞춰 놓았다면 소스 단위의 디버깅이 기본으로 사용됩니다. 아래의 명령으로 소스라인 디버깅 옵션을 ON, OFF 할 수 있습니다. GUI 를 사용해서 Debug-Source Mode 를 클릭해서 해제할 수 도 있습니다. .lines (Toggle Source Line Support) The .lines command
Posted by DebugMachine | 1 Comments

[Debugging Toolbox]Retrieving information from ASP

[DT]Retrieving information from ASP http://blogs.msdn.com/debuggingtoolbox/archive/2007/03/22/windbg-script-retrieving-information-from-asp.aspx 글 : Roberto Alexis Farah 번역 : 이태화 오늘은 kernel 에 대한 script 가 아니고 ASP 에 script 입니다. --------------------------------------------------------------------------------
Posted by DebugMachine | 0 Comments

[Debugging Toolbox]Digging the Call Stack

http://blogs.msdn.com/debuggingtoolbox/archive/2007/03/18/windbg-script-digging-the-call-stack.aspx 글 : Roberto Alexis Farah 번역 : 이태화 안녕하세요 오랜만에 글을 번역해 보는군요 정말 많은 글들이 있는데 시간이 부족하여 많은 정보를 전달해 드리지 못해서 죄송 ^^; --------------------------------------------------------------------------------
Posted by DebugMachine | 0 Comments

[Debugging Toolbox]Read Me

http://blogs.msdn.com/debuggingtoolbox/archive/2007/03/18/read-me.aspx 글 : Roberto Alexis Farah 번역 : 이태화 안녕하세요 이번에는 WinDbg Script 에 대한 블로그를 번역하기로 하였습니다. Roberto 에게 컨텍하여 번역을 해도 좋냐고 물어보니 흔쾌히 허락해 주는군요 ^^ 좀더 많은 정보의 공유를 위해서 좋은 블로거를 만나게 되면 한국어로 번역하도록 노력하겠습니다.
Posted by DebugMachine | 0 Comments

boot 시의 드라이버 Load 정보 기록하기

Boot Type 의 Driver 를 개발하거나 해당 Driver 에 Filter 를 거는 드라이버를 작성하다 보면 Boot 시점에 해당 드라이버들이 정상적으로 Load 되었는지 확인해야 하는 경우가 많이 있습니다. 이럴때 boot.ini 에 Entry 에 /BOOTLOG 값을 설정하면 %systemroot%Ntbtlog.txt 파일에 해당 정보가 남게 됩니다.
Posted by DebugMachine | 0 Comments

[WinDbg Command]uf

uf (Unassemble Function) 많은 분들이 u 명령을 사용해서 unassemble 를 수행하고 계실 것 입니다. 그러나 함수가 길다면 이를 디버깅 하는데 많은 어려움을 격게 되는데 uf 명령을 사용하면 함수 전체를 unassemble 할 수 있습니다. u 명령을 사용할 경우 1: kd> u nt!ntcreatefile nt!NtCreateFile: 81e18769 8bff           
Posted by DebugMachine | 0 Comments

[WinDbg Command]ln

ln 명령은 해당 address 에 가장 근접한 Symbol 을 보여줍니다. 현재 EIP 의 내용으로 찾아보니 다음과 같이 나오는 군요 0: kd> ln (81c35688)   nt!RtlpBreakWithStatusInstruction   |  (81c3568c)   nt!READ_REGISTER_UCHAR Exact matches:     nt!RtlpBreakWithStatusInstruction
Posted by DebugMachine | 0 Comments

[WinDbg Command].pcmd

말 그대로 Target 이 Stop 되면 지정된 command 가 자동으로 실행되게 되네요 이 명령의 경우 KD 를 사용하거나 별도의 창을 띄우지 않은 상태에서 디버깅을 할때 유용할 것 같습니다. stop 이 되면 callstack 이나 local 변수의 내용을 보여주게 한다면 편리할것 같습니다. 0:000> .pcmd No per-prompt command Execution is done. 이라는 문자열을 출력하게 되는군요 0:000>
Posted by DebugMachine | 0 Comments

[WinDbg Command].formats

값을 주면 다양한 방식으로 해당 값을 표시해 주는 명령 입니다. 1: kd> .formats 1c407e62 Evaluate expression:   Hex:     1c407e62   Decimal: 473988706   Octal:   03420077142   Binary:  00011100 01000000 01111110 01100010
Posted by DebugMachine | 0 Comments

여러분은 BP 를 사용하시나요? 아니면 BU 를 사용하시나요?

여러분들은 BP 를 사용하시나요? 아니면 BU 를 사용하시나요? 저는 예전에 BP 를 사용하다가 어느날 부터 BU 를 사용하고 있습니다. 오늘 자료를 찾아 보다가 이 둘 간에 중요한 차이점이 있어서 공유를 하고자 합니다. BP 는 address 에 breakpoint 를 설정하는 것이고 BU 는 symbol 을 사용한다고 합니다. 그리고 workspace 에 breakpoint 를 저장하고 싶다면 bu 를 사용하라고 되어 있군요 아무 생각없이 BU
Posted by DebugMachine | 0 Comments

Kernel Memory Dump 설정을 위한 레지스트리 키

안녕하세요 유지보수를 진행하다 보면 고객님께 Kernel Memory Dump 설정을 요청드릴때가 많이 있습니다. GUI 를 사용하여 설정할 수도 있지만 고객님이 잘 모르실 경우 설정이 어려운 경우가 있습니다. 아래의 키 값을 1로 설정하면 전체 메모리 덤프가 설정되고 3으로 설정하면 작은 메모리 덤프가 설정됩니다. 제가 몇일 전에 올린 Verifier 설정 파일과 이 방법을 조합하면 쉽게 고객님의 PC 에 Verifier 와 Dump 설정을 할
Posted by DebugMachine | 0 Comments

배치 파일 사용하여 Verifier 설정하기

아래의 문서를 보시면 알겠지만 Verifier 를 설정할때 UI 를 사용하지 않고 Command 로 설정하는 것이 가능합니다. 그래서 다음과 같은 Bat 파일을 만들어 봤습니다. cls echo off @echo   ======================================================= @echo   =======================================================
Posted by DebugMachine | 0 Comments

자동으로 Debugger 에서 시작되도록 하기

요즘 Debugging applications 라는 책을 읽고 있는데 좋은 Tip 이 많이 나오는 군요 오늘은 그중에 한가지를 소개하고자 합니다. 디버깅을 하시다 보면 실행 파일이 실행 되자 마자 Attach 를 하기도 전에 종료 되어서 디버깅 하기가 힘든 경우가 많이 있으셨을 겁니다. 이럴때 사용하기 좋은 팁이 한가지 있더군요 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image
Posted by DebugMachine | 0 Comments

Symbol 을 확인하는데 사용하는 SymChk

[SymChk] SymChk 는 Microsoft 의 Symbol Checker tool 이다. executable file 이 올바른 Symbol 을 가지고 있는지 확인합니다. 고객 site 에 방문해야 하는데 symbol 정보를 공유폴더나 Web 을 통해서 얻을 수 없을 경우 정확히 이야기 하면 해당 Symbol 을 Srv 를 통해서 받을 수 없고 Local 에 모두 가지고 있어야 하는 경우 해당 Symbol 을 모두 받기 위한 용도로 사용합니다.
Posted by DebugMachine | 0 Comments

windbg 에 들어 있는 Tool kdbgctrl

WinDbg 에 재미 있는 툴이 들어 있습니다 Kernel Debugger 를 동작하게도 하고 동작하지 않게도 할 수 있는 툴입니다. (2003 Server 이후에서 동작한다고 합니다.) Debug 로 부팅을 하였하고 kdbgctrl.exe -d 하니까 커널 디버거가 동작하지 않게 되는군요 Vista 에서 Test 를 해보았는데 bcdedit /debug OFF 를 한 상태에서 Test 해보았더니 에러가 발생합니다. 문서에 보면 boot.ini
Posted by DebugMachine | 0 Comments

CMD Shell 에서 Error code 확인하기

Win32 Error code 의 내용을 확인하기 위해서 VC Tools 의 Error Loockup 을 실행하는 경우가 많이 있었습니다. 정말 귀찮은 일이죠 CMD 에서 다음과 같은 명령으로 이를 처리할 수 있습니다. C:\net helpmsg 5 액세스가 거부되었습니다. C:\net helpmsg 1056 서비스의 인스턴스가 이미 실행중 입니다.
Posted by DebugMachine | 0 Comments

Windbg 명령중 조건BP 와 변수 출력

Windbg 를 사용하다 보면 어떤 변수의 값이 특정 값일 경우 BP 를 설정하고 싶은 경우가 있을 것 입니다. 아래 명령의 경우 MyFunc 에서 MyVar 이 20 보다 클 경우 멈추고 작을 경우 go 하는 것입니다. bp MyDriver!MyFunc "j (poi(MyVar)>0n20) ''; 'gc' " 두번째 팁은 위의 명령을 조금 확장한 것입니다. @@ 를 사용하면 C++ 표현식을 사용할 수 있는데 || 를 사용하여
Posted by DebugMachine | 0 Comments

Windows Vista 에서 Kernel Debug 설정 하는 방법

안녕하세요 ^^ Vista 에서 디버깅을 하면서 매번 새로운 Build 를 설치하고 나서 수많은 Bcdedit Command 를 입력해야 하는데 다 외울 수가 없어서 견우일지를 매번 참조하느라 본의 아니게 조회수를 올려 놓고 있었네요 ^^ 그런데 간단하게 설정하는 방법이 있습니다. c:\> bcdedit /debug on c:\> bcdedit /dbgsettings serial debugport:1 baudrate:115200 저같은
Posted by DebugMachine | 0 Comments

ERESOURCE 사용법 및 내부

동기화에 대해서는 많은 분들이 고민을 많이 해보셨을 것이고 단순히Spinlock 을 사용해서 동기화를 구현한 분들도 계실 것입니다. Spinlock 을 사용하면 어떤 문제가 있을까요? 한번에 하나의 Thread 만 접근이 가능하다는 것인데 다수의 Thread 가 공용 Buffer 를 Read 만 하는 것이라면 동시에 접근을 해도 문제가 없을 것입니다. Buffer 를 변경하는 경우에만 동시에 접근이 안되도록 하려면 어떻게 해야 할까요? Executive
Posted by DebugMachine | 0 Comments

[WinDbg Command]!error, .enable_long_status

블로그를 보다가 좋은 디버거 명령을 발견하였습니다. (!error, .enable_long_status) 첫번째 좋은 명령은 .enable_long_status 입니다. 아래와 같이 명령을 실행하면 우리가 NTSTATUS.H 에서 보는 형태의 에러 값을 볼 수 있습니다. 0:000> dt status status = -1073741823 0:000> .enable_long_status 1 0:000> dt status status
Posted by DebugMachine | 0 Comments

Kernrate 를 이용한 성능 분석

안녕하세요 오늘은 Kernrate 라는 성능분석 툴에 대해서 설명을 해보려고 합니다. 필터 드라이버들을 개발 하다 보면 성능 문제를 만나는 경우가 많이 있습니다. Filesystem Filter Driver 를 작성하였는데 Load 해보니 system 이 느려지더라 등의 문제가 있을 수 있는데 이때 어디가 병목지점인지 찾기가 힘듭니다. 왜냐하면 Filesystem Filter 의 경우 1초에도 수천개의 I/O 가 지나고 있기 때문에 전부를 비교할
Posted by DebugMachine | 0 Comments

Desktop Heap Overview

"이 문서는 http://blogs.msdn.com/ntdebugging blog 의 번역이며 원래의 자료가 통보 없이 변경될 수 있습니다. 이 자료는 법률적 보증이 없으며 의견을 주시기 위해 원래의 blog 를 방문하실 수 있습니다. ( http://blogs.msdn.com/ntdebugging/archive/2007/01/04/desktop-heap-overview.aspx )" 아래 번역은 저와 함께 작업하는 한주성 씨가
Posted by DebugMachine | 0 Comments

Pool 소모 event ID 2020, 2019

"이 문서는 http://blogs.msdn.com/ntdebugging blog 의 번역이며 원래의 자료가 통보 없이 변경될 수 있습니다. 이 자료는 법률적 보증이 없으며 의견을 주시기 위해 원래의 blog 를 방문하실 수 있습니다. ( http://blogs.msdn.com/ntdebugging/archive/2006/12/18/Understanding-Pool-Consumption-and-Event-ID_3A00_--2020-or-2019.aspx
Posted by DebugMachine | 1 Comments
 
Page view tracker