driver-online
  log-inmypagesitemap
top
   자유게시판
   로그북
    견우일지
    시스템팀 개발일지
    Beginning Driver
   유용한 팁&강좌
   CrashDump분석(beta)
   개발QnA
    WDM 입문
    USB
    NDIS
    File System
    Debugging 관련
    그 외
 
개발자 포럼 > 유용한 팁&강좌
[WinDbg 명령] !stacks
 ·작성일 2008.06.17:00.25 (화)  · 작성자 greemate  · 조 회 6,408


커널스택을 보여주는 명령입니다.
모든 프로세스의 모든 쓰레드를 보여주기 때문에 다음과 같이 명령하면 !process 0 7 과 같은 역할을 합니다.

!stacks 2

뒤의 숫자 2 를 1 이나 0 으로 사용할 수도 있는데 숫자가 작을 수록 더 간단한 정보를 보여줍니다.

!process 0 7 과 비슷한 출력을 보이는 명령어를 구지 설명하는 이유는 !stacks 만의 특출난 기능이 있기 때문인데요.

!stacks 2 FilterString

처럼 뒤에 FilerString 을 주면 FilterString 이 포함된 콜스택만 보여줍니다. XP 이상에서만 지원하는 기능이지만 매우 편리한 기능입니다. 예를 들어 시스템이 대드락이나 행에 빠져있을 경우 자신의 드라이버에서 행이 걸려 있는지 간단하게 확인할 수 있습니다. !process 0 7 을 사용하면 모든 쓰레드의 콜스택을 펼쳐놓고 찾아야 하지만 이렇게 하면 콜스택에 드라이버가 존재하는 쓰레드만 보여주기 때문에 출력 내용이 간단하고 찾기가 수월해 집니다. 

예제)
NDIS 드라이버가 걸려있는 쓰레드만 찾아 봅니다.

kd> !stacks 2 NDIS
Proc.Thread  .Thread  Ticks   ThreadState Blocker

Max cache size is       : 1048576 bytes (0x400 KB)
Total memory in cache   : 0 bytes (0 KB)
Number of regions cached: 0
0 full reads broken into 0 partial reads
    counts: 0 cached/0 uncached, 0.00% cached
    bytes : 0 cached/0 uncached, 0.00% cached
** Prototype PTEs are implicitly decoded
                            [863a5490 System]
   4.00006c  863a75b8 0001015 Blocked    nt!KiSwapContext+0x2e
                                        nt!KiSwapThread+0x46
                                        nt!KeRemoveQueue+0x20e
                                        NDIS!ndisWorkerThread+0x30
                                        nt!PspSystemThreadStartup+0x34
                                        nt!KiThreadStartup+0x16

                            [8613eda0 smss.exe]

                            [85ff21c0 csrss.exe]

                            [8611d0a0 winlogon.exe]

                            [8610a1b8 services.exe]

                            [85ff91d8 lsass.exe]

                            [860f37c8 svchost.exe]

                            ...

깔끔하게 NDIS 가 생성해 놓은 WorkerThread 하나만 나왔네요. 현재 다른 쓰레드에서는 NDIS 드라이버의 기능이 호출되지 않고 있다는 것을 알 수 있습니다. 

*답변을 받은 후 감사의 글을 남기는 것은 꼭 지켜야할 네티켓입니다.
    

이 전 : [WinDbg 분석] BugCheck 0x8E

다 음 : [WinDbg 사용] VISTA 에서 디버그 메시지 출력하기


·미친감자 감사합니다. 잘 읽었습니다. 2008.06.18 코멘트 삭제
 
quick-menu
event
study
QnA
pds
family-site concert used used2 intro
address
address