본문 바로가기

WinDbg5

Windbg - Crash Dump 발생시 기본 체크 사항들 Crash Dump 분석 체크 리스트 여기서는 덤프 분석 시 기본적인 확인할 사항을 정리 해본 것 입니다. 해당 상황에 아래 확인 사항들을 보시면 문제점 해결하시는데 도움이 되실 겁니다. 기본 사항 내부 자료 검색 Google 혹은 Microsoft Search에서 알려진 이슈가 있는지 검색 (가끔 답을 바로 찾을수도..) 툴을 이용해서 저장한 Dump (자동 혹은 수동으로 생성..) OS/SP 버전 (서비스팩) OS언어 Debug 시간 System 가동 시간 컴퓨터 이름 .kframes 100 Application Crash or hang 일때 기본 분석 (!analyze –v 또는 행이라면 !analyze –v –hang) Crash 와 hang의 Critical Sections 확인 (!locks .. 2020. 11. 27.
Windbg Preview - Time Line Travel 분석 오늘 Microsoft Store를 방문하여 새로운 버전의 Windbg가 나온것을 알게되었다. Preview 상태이긴 한데, 어떤 변화가 있는지 궁금하여 설치해보고, 놀라움을 감출수 없었다. 기존 Windbg에서 보여주던 불편했던 UI가 사라지고, Debugging로 진화하고 있는 모습을 알 수 있다. 어떤 종류를 디버깅 할 수 있는지 File 메뉴를 통해 확인해본 결과, Remote 부터 프로세스, 코드 소스등을 기존과 동일한 수준으로 지원한다. 그리고 직관적이라서 사용성이 편리하다. 예전에는 symbols 설정한는 것도 일이였는데, 심볼 설정도 자동으로 구성되니, 기존 커맨드 명령을 통해 사용하고 초기 설정을 진행해야 했다면, 이런 부분을 해결해 놓은 버전이니 보다 쉽게 사용이 가능할 것 같다. 그리.. 2020. 11. 24.
BugCheck 0x50 - PAGE_FAULT_IN_NONPAGED_AREA PAGED와 NONPAGED AREA 란 윈도우에서 PAGE는 정보를 사용하기위한 정보를 저장해 놓은 것이라고 생각 하면 되는데, 기본 크기는 4096Byte 이다. PAGE라는 용어는 여러 곳에서 사용되게 되며, NONPAGED란 가상 메모리화 할 수 없는 영역, 즉 시스템 메모리(실제 물리 메모리) 영역에서 오류가 발생했다는 판단하면 된다. 오류가 발생하는 원인 이유는 크게 2가지로 보실수 있다. 첫째는 함수로 지정한 공간이 너무 작은 경우, 두번째는 위의 반대 상황으로, 입력값이 너무 커서 발생할 수 있다. 같은 상황 같지만, 장애를 조치하는 방식에 있어서는 엄연히 다른 부분이 되겠다. 해결 방법 어떠한 값이 잘못된 메모리 영역을 사용하도록 하였는지 확인하는게 키 포인트로, 잘못된 메모리를 찾았다면.. 2020. 11. 23.
Livekd – 커널 라이브 디버깅 우리는 지금까지 커널 디버깅을 위하여, 가상의 머신과 호스트 머신, 2개의 머신이 필요하였었다. 이와 같은 불편함을 감소 시키기 위해, 로컬에서 디버깅 할 수 있는 환경을 Livekd를 이용하여 진행할 수 있다. Livekd는 Windbg의 로컬 디버깅에서 제한된 아래와 같은 기능을 이용할 수 있다. 레지스터 확인 덤프 생성 호출 스택 확인 로컬 머신에서 실행 되기 때문에 브레이크 포인트와 같은 제어는 불가능하지만, Windbg의 로컬 디버깅에서 제한된 기능을 추가로 이용할 수 있어, 일반적인 간단한 함수와 상태 분석을 진행하는데는 큰 어려움이 없다. (하지만 이것으로 책 내용을 진행하지 않은 이유는 온전한 커널 디버깅과 예외 상황에 대한 처리의 이해를 이해가 필요하기 때문에, Windbg의 활용도가 크.. 2020. 11. 11.
Windbg – Display Memory Command D, DD, DW, DB 메모리의 내용을 확인할 때 Windbg에서 사용하는 명령어로 매우 자주 사용되는 명령으로, 아래와 같이 사용할 수 있다. D 지정한 범위의 메모리 내용을 표시 DD range 지정한 범위의 메모리 내용을 DWORD(32bit)로 표시 DW range 지정한 범위의 메모리 내용을 WORD(16bit)로 표시 DB range 지정한 범위의 메모리 내용을 BYTE(8bit)로 표시 범위는 단일 주소를 입력하게 되면 기본적으로32개를 보여주며 단일 주소 입력후 L 옵션을 통해 보고자 하는 메모리 개수를 지정해 주거나 주소를 2개 입력해 해당 주소 사이의 메모리 내용을 확인할 수도 있다. 그 외에도 테이터 타입별 확인할수 있는 명령도 존재 하는데, DT 명령을 통해 데이터 구조체를 확인하거나 DS(s)명령을 통해.. 2020. 11. 5.