동적 프로그램 분석은 프로그램 분석으로서 실제 또는 가상 프로세서에서 프로그램을 실행함으로써 수행된다. 이것을 더 효과적으로 하기 위해서 프로그램은 반드시 충분히 테스트된 입력을 사용해서 흥미로운 행동을 생산해야 한다. 코드 커버리지 같은 소프트웨어 테스트 기법을 사용하는 것은 적절한 프로그램 셋트 조각의 관찰되는 가능한 행동이 확신하는데 도움을 준다. 또한 프로그램의 실행 시에 인스트루먼테이션의 효과를 최소화하기 위해 조심해야 한다. 부적절한 테스팅은 큰 재앙을 초래할 수 있다.
동적 분석은 정적 분석과 대조된다. 유닛 테스트, 통합 시험, 시스템 검사 그리고 인수 검사는 동적 분석을 사용한다.
툴들
- BoundsChecker: 윈도우 기반 애플리케이션의 메모리 오류 탐지. Micro Focus DevPartner에 포함된다.
- Cenzic: 보안 취약점을 위한 웹 애플리케이션 스캐닝을 하는 동적 애플리케이션 보안 툴들을 발표하였다.
- ClearSQL: PL/SQL을 위한 리뷰, 품질 관리 그리고 코드 일러스트레이션.
- Daikon는 동적 불변 탐지의 구현이다. Daikon은 프로그램을 실행하고 프로그램이 계산한 결과를 관찰하며, 관찰한 실행 동안 참인 값 즉, 전체 실행 기간 동안 참일 것 같은 값을 보고한다.
- Dmalloc은 메모리 할당과 누수를 체크하는 라이브러리이다. 소프트웨어는 반드시 재컴파일되어야 하며 모든 파일들은 특별한 C 헤더 파일인 dmalloc.h를 포함해야 한다.
- DynInst는 런타임 코드 패칭 라이브러리로서 동적 프로그램 분석 조사툴을 개발하고 컴파일된 실행 파일에 적용할 때 유용하다. Dyninst는 일반적으로 소스 코드나 재컴파일을 필요로하지 않지만, 디버깅 심볼 같은 것들은 인스트루먼트를 편하게 해준다.
- Gcov는 GNU 소스 코드 커버리지 프로그램이다.
- HP Security Suite
- IBM Rational AppScan
- Intel Thread Checker
- Intel Parallel Inspector
- Jalangi
- OpenPAT는 프로그램 실행 시 동적 실행 추적 정보와 함께 툴을 호출해서 정적으로 어셈블리와 바이트코드를 인스트루먼트한다. 메모리 누수 감시에 사용된다.
- Parasoft Insure++는 런타임 메모리 분석과 오류 탐지 툴이다. 이것의 Inuse 컴포넌트는 시간에 따른 메모리 할당과 힙 사용, 블록 할당 등의 그래픽 뷰를 제공한다.
- Parasoft Jtest는 경쟁 상태, 예외 처리, 자원과 메모리 할당 그리고 보안 공격 취약점 같은 결함을 드러내기 위해 런타임 오류 탐지를 사용한다.
- CriticalBlue의 Prism
- Purify: 주로 메모리 오염과 메모리 누수 탐지를 수행한다.
- Valgrind는 프로그램을 가상 프로세서에 실행시키고 메모리 오류와 멀티스레드 프로그램에서 경쟁상태를 탐지한다.
- VB Watch는 비주얼 베이직 프로그램에 동적 분석 코드를 삽입해서 그것의 성능, 콜 스택, 실행 추적, 초기화 객체들, 변수들 그리고 코드 커버리지를 모니터한다.
- Vector Fabrics Pareon Verify[깨진 링크(과거 내용 찾기)]는 메모리 오류와 스레딩 오류를 애플리케이션에서 찾는다.
같이 보기
외부 링크