'전체 글'에 해당되는 글 202건

  1. 2007.07.11 [WinDbg 사용] 조건 브레이크 포인트
WinDbg 디버깅2007. 7. 11. 01:00
반응형

조건 브레이크 포인트를 사용하면 디버깅에 도움이 되는 경우가 상당히 많습니다.
하지만 조건문을 어떻게 적어줘야 하는지 잘 몰라서 적극적인 활용을 하지 못하고 있습니다. ^^

이번에 익힌 사용방법을 적어놓고 갈무리하려 합니다. ㅋㅋㅋ

kd> bp b8fb429d ".if @@(pData->dwMyFlag & 0x00010000) {} .else {gc}"

b8fb429d 주소에 브레이크 포인트를 거는데 조건에 따라 걸리게 하고 싶은 상황입니다.

.if {} .else {} 명령을 사용한 조건문입니다.

@@( ) 을 사용하면 괄호 안에서는 C/C++ 소스코드에서 사용하던 표현들을 쓸 수 있습니다.
심볼이 맞아 있으면 위와 같이 소스에서 사용하던 구문 그대로 표현할 수 있습니다.
pData->dwMyFlag 에서 0x00010000 비트가 켜져 있으면 브레이크 하라는 의미입니다.
비트가 켜져 있지 않으면 .else 에 의해서 gc 로 계속 진행합니다.

PS)
조건 브레이크 포인트를 사용할 때 조건이 맞지 않아서 계속 진행하게 할 때는 반드시 gc (Go from Conditional Breakpoint)를 사용해야 합니다. 한 줄씩 step trace 를 하다가 조건 브레이크 포인트를 만났을 경우 gc 를 해야만 다음 라인으로 step trace 가 되기 때문입니다.
.else {g} 와 같이 쓴다면 조건이 맞지 않을 경우 g 를 실행하여 확~~~ 실행되어 버립니다. 한 줄씩 디버깅하면서 step trace 하고 있는 경우에 F10 을 눌렀는데 다음 라인에서 서지 않고 그냥 실행되어 버릴 수 있다는 뜻입니다. 당황스럽겠죠?


http://www.driveronline.org/bbs/view.asp?tb=tipbbs&GotoPage=1&s_bulu=&s_key=&no=91

반응형
Posted by GreeMate