사용자 도구

사이트 도구


kb:appverifier

AppVerifier

간단하게 설명하자면 AppVerifier는 윈도우즈 API를 후킹하여 그 파라미터를 검사해서 런타임 시에 발생하는 문제점을 미리 예측하게 해주는 툴이다. 코드 정적 분석과 실제 디버깅 중간 어디쯤에 위치하는 툴이라고 볼 수 있겠다.

위 스크린샷에서도 볼 수 있듯이 API 사용 문제점 뿐만 아니라 호환성 문제 체크라던지, 보안 문제, 리소스 부족 상황 시뮬레이션 등도 해주는 고마운 프로그램이다. GUI 방식으로도 동작하지만, 진정한 가치는 커맨드 라인을 이용해 UnitTest의 일환으로 실행시키는데 있다고 나 혼자서 생각한다. -_-

기본적인 사용법

메뉴 구성이 간단하기 때문에 딱히 어려울 건 없다. 애플리케이션 항목에다 디버깅하고자 하는 프로그램을 추가하고, 우측의 메뉴에서 로그를 남길 이벤트(?)들을 고른다. 그 다음 아래 쪽의 Save 버튼을 누른다. 그러면 해당 애플리케이션은 시작하자마자 디버그 브레이크가 걸린다. 그러므로 Visual Studio 혹은 WinDbg를 이용해 프로그램을 시작해야 한다. (그냥 시작해서 디버거 붙여도 되겠네) 네이티브 프로그램 말고도 되는 모양인데, 별로 해볼일이 없으므로 무시~

프로그램에서 문제점이 발견되면 디버그 브레이크가 걸리면서 로그가 남게 된다. 로그는 View → Logs 항목에서 볼 수 있다. XML 형식으로 문제점 설명 그리고 콜스택 정도가 남는다.

문제점

  • 힙 체크 기능 같은 경우 유저 메모리 블록 앞뒤에다 헤더를 붙이는 방식으로 동작한다. 이 헤더의 크기가 꽤 크기 때문에 메모리를 많이 할당하는 프로그램은 체크를 꺼버리지 않으면 정상적으로 동작하지 않을 수 있다. 히밤.
  • 설명문에도 나와있지만, 락 체크를 켜놓은 경우 access violation이 발생할 수 있다. 음…

링크

kb/appverifier.txt · 마지막으로 수정됨: 2014/11/06 17:51 (바깥 편집)