2014. 11. 6. 14:30

메모리 dump 분석 예 ( 정확하지 않음 )

1.  메모리 덤프를 crash dump 파일 방식으로 실행 합니다.

2.  명령 창에 관련 symbols 파일을 받습니다.  ( 파일 열어 보면 명령창 입력 하는 부분이 있습니다. )

sympath srv*C:\PublicSymbols*http://msdl.microsoft.com/download/symbols;  <- C 밑에 받게 설정.

3.  Symbols 파일을 내려 받습니다.

.reload /f sqlservr.exe  ß--  sql 지정해 주지 않으면 모든 실행파일에 대한 받습니다 오래 걸립니다.   허나 컴이 2012 설치되어 있어서 서버 버전과 같은 sql 있어야 같은 느낌 입니다.

4.  문제되는 스래드 파악 봅니다. ^^

~~[스래드번호]s  

아래 노란색이 스래드 번호 입니다.

 

2014-10-31 07:07:06.960 서버           Process 0:0:0 (0x3318) Worker 0x000000002A7EA1A0 appears to be non-yielding on Scheduler 22. Thread creation time: 13059177216471. Approx Thread CPU Used: kernel 0 ms, user 70543 ms. Process Utilization 30%. System Idle 68%.

5.     자세한 내역을 봅니다

kL100

 

15번 파일을 그런 단계로 본 내역입니다.  Call site 값으로 세부적으로 뭔가 봐야 하는데 그 다음 명령을 모르겠습니다.

 




 

6.     참고로

.cxr sqlservr!CXStmtQuery::ErsqExecuteQuery+0x602    이 노란색이 call site 값인 것 같은데요..

 

7.     아래 부분 처럼

du 0x00000101`c21ae200 L100    이게 쿼리 내역을 보는 법인 것 같습니다.  RetAddr 값 일까요???  ㅋㅋ.

 

답변 받은 분도 명령창 번호가 같은걸로 봐서는  15번 덤프 파일을 가지고 분석 했습니다

 

참고로 ) 여러가지 원인이 있다는 Non-yielding Scheduler  dump 내역 입니다.

http://technet.microsoft.com/en-us/library/cc917684.aspx#XSLTsection129121120120

 


 

'ETC' 카테고리의 다른 글

MS-SQL 2016 New Features  (0) 2017.02.24
SQL Server 2012 Certification upgrade info  (0) 2015.05.20
Windbg 명령어 & 설치  (0) 2014.11.06
Window 서비스 등록/삭제 방법  (0) 2011.10.20
2014. 11. 6. 14:28

Windbg 명령어 & 설치


* WinDbg 설치 방법 

OS 버전에 맞는 파일을 받아 설치 합니다. 재부팅이 필요 하네요.




WinDbg 명령어

                                                                                                                                                                                                                                                              출처         

Command

option

usage

Desc

종료

q



디버깅 종료

qd



디버깅 종료;연결해제

디버깅 환경정보

vertarget



타겟 컴퓨터 정보 표시

version



디버그 환경 정보 표시

.lastevent



마지막 디버그 이벤트 정보 표시

||



디버깅 세션 정보 표시

sumble & sorurce

.symfix



MS 심볼경로 설정

.sympath



심볼경로 확인/설정

.sym noisy



심볼파일 검색 과정을 출력

.srcpath



소스경로 설정

.srcnoisy


.srcnoisy 1

소스경로 검색 과정을 출력

모듈

lm


l

로드된 모듈만 표시



m [pattern]

패턴과 일치되는 모듈만 표시



v

모듈 상세정보 표시

!lmi

!lmi ntdll.dll


모듈 상세정보 표시

.reload


/f [m_name]

심볼을 즉시 로드

x

X ntdll!*

X *!*abc*

/v

/t

/n

심볼 타입을 표시.

데이터 타입을 표시

이름순으로 정렬

ln


ln [address]

해당 주소에 근접한 심볼의 정보 표시

레지스터

r



레지스터 정보 표시

r $proc



현재 프로세스의 PEB주소( user-mode)

현재 프로세스의 EPROcESS주소( kernel-mode)

r $thread



현재 스레드의 TEB주소( user-mode)

현재 스레드의 ETHREAD주소( kernel-mode)

r $tpid



현재 프로세스ID(PID)

r $tid



현재 스레드ID(TID)

언어셈블

u


f

b

언어셈블

언어셈블(함수전체)

언어셈블(ip이전의8개 명령어)

콜스택

k


[n]

p

b

n

v

f

콜스택 정보표시

함수정보 출력

인자표시

프레임번호

FPO정보 표시

스택 사용량 표시

break point

bp

bp 0x123456


bp 설정

bl



bp 리스트 출력

bc

bc * | [frame_no]


bp 삭제

bd,be

bc * | [frame_no]


bp disable/enable

bm

bm notepad!*Win*


패턴과 일치하는 모든심볼에 bp설정

bu

bu aaa!bbb


로드되지 않은 심볼에 대한 bp설정

ba



특정 주소에 access bp

지역변수

dv

dv modulr!test*

/i

/V

심볼유형과 인자유형 표시

변수저장 위치 표시( register or address )

데이터유형

dt

df _EPROCESS 0xaddr


주소를 특정 데이터 형으로 변환해서 표시

du



Unicode string 표시

da



Ansi string 표시

dc




db




dy








!address

!address

!address [address]



프로세스 & 스레드 정보

!peb



PEB(Process Environment Block)표시

!teb



TEB(Thread Environment Block) 표시





!gle



API의 마지막 에러코드 표시

실행 제어

t



Trace

~.t



다른 스레드를 중지시킨 상태에서 하나의statementt 실행

g




p



Step Over

gu

gu

~0 gu


현재함수가 복귀할 때 까지 실행

스레드 0을 제외한 모든 스레드를freeze

wt



내부에서 호출된 함수와 함수호출 횟수등의 정보 표시

.cxr



컨텍스트 변경

!ready




.thread




!thread




.trap




.process




!process




ed




eb

eb .-6 90 90 90 90 90 90


6byteNOP(0x90)으로 변경

!error

!error [error code]


에러코드 정보표시


'ETC' 카테고리의 다른 글

SQL Server 2012 Certification upgrade info  (0) 2015.05.20
메모리 dump 분석 예 ( 정확하지 않음 )  (0) 2014.11.06
Window 서비스 등록/삭제 방법  (0) 2011.10.20
Admin::Superdome VS DL580 G7  (0) 2011.01.10