기본 콘텐츠로 건너뛰기

windbg 사용법 정리

제가 참고할 용도로 작성하고, 계속 추가해 나갈 예정입니다.
 3.로드되지 않은 심볼에 breakpoint 설정
특정 모듈이 로드되기 전에 모듈 내부에 bp를 걸고싶을때 사용bu xxx!print+0x1f3 // xxx모듈의 print 함수 +0x1f3 위치에 bp
2. 특정 모듈(dll,ocx) 로드시 breakpoint 설정
모듈이 로드되기 전에는 모듈내부에 bp를 걸수가 없어서, 모듈을 로드할때 bp를 걸고 이후에 모듈의 함수나 주소에 bp를 걸어서 디버깅하고 있습니다.
sxe ld abc.dll    // abc 모듈을 로드하는 시점에 bp가 걸림
1. batch파일에서 심볼을 로드하는 명령어디버깅 환경설정의 편의를 위해 batch파일을 만들때 , 심볼을 로드하게 하는 스크립트입니다."C:\Program Files\Windows Kits\8.1\Debuggers\x86\windbg.exe" -y"SRV*c:\\symbols*http://msdl.microsoft.com/download/symbols" -c".load c:\\blwdbgue.dll;g" "C:\Program Files\Internet Explorer\iexplore.exe"
설명
-y"SRV*c:\\symbols*http://msdl.microsoft.com/download/symbols" // 
windbg 의 사용법을 찾아본 결과 심볼을 로드하기 위해서는 -c 옵션에서 커맨드는 넣는게 아니라 심볼관련 옵션인 -y가 존재합니다. 심볼서버를 사용하겠다는 뜻이며 뒤의 주소가 심볼서버의 주소 입니다. 주소에서 다운받는 심볼정보들은 C:\symbols 폴더에 저장되게 됩니다.


댓글

이 블로그의 인기 게시물

좌표압축

알 고리즘을 풀다 보면 좌표압축이라는 테크닉이 필요합니다. 저는 좌표압축을  "순위가 중요한 알고리즘에서, 입력값의 갯수보다 입력값의 범위가 클 때 사용하는 방법",  이라고 생각하고 있습니다. 1차원의 좌표로 예를 들어보겠습니다. n개의 x값 을 입력 받아, 입력 중 두개의  x1,x2를 선택하여 사이에 존재하는 점의 개수를 구하는 작업이 있다고 가정합시다. x의 범위는 int형의 범위인 -2^31 ~ 2^31-1 이고 중복은 없습니다. n은 5000 이하입니다. 입력은 n : 7, -2^31, -10000, 0 , -2000, 3, 6, 30000 , x1 = -10000, x2 = 30000 대략적으로 보면 그림과 같이 나타나게 됩니다. x1,x2 사이의 값을 구하게 되면 4개의 값이 나오게 됩니다. 이 경우 위의 값들을 아래와 같이 순위를 유지하면서 바꿔주어도 문제를 풀 수가있습니다. 이렇게   바꿔서 풀 수 있는 이유는 값보다 값의 순위가 중요하기 때문 입 니다. 압축좌표가  필요한 예 로, 카카오 코드 페스티벌 5번 캠핑 문제가 될 수 있습니다. 이 경우 좌표  x,y의 범위는 0 ~ 2^31-1  이지만, 입력받는  좌표의 개수는 최대 5000개  입니다. 만약 입력의 좌표를 그대로 반영하여 문제를 푼다고 하면 배열의 크기가 2^31-1 개가 되어야 합니다. 게다가 2차원으로.. 못풉니다. 탐색하다가 시간다 끝날꺼에요. 하지만 입력이 최대의 개수가 최대 5000이라고 했으니 좌표압축을 이용해 입력받은 좌표를 0~5000 으로 매치시키고 풀게되는 것 입니다.