2011년 12월 7일 수요일

TESTRT - 메모리 프로파일링


low level of mempro options:
--atp_reports_fiu=0
--atp_reports_sig=0
--atp_reports_ffm_fmwl=0
--atp_reports_abwl=0
--atp_no_track_allocs_before_init
--atp_keep_content
--atp_dump_block_only_once
--linenumoptim


Memory profiling for C/C++ with IBM Rational Test RealTime

현재의 메모리 프로파일을 분석하고 나면, 에러 및 경고 관련된 정보를 제공합니다.
메모리 프로파일에서 식별하는 에러는 아래와 같습니다:
  • FFM (freeing freed memory) -- 응용이 이미 해제한 메모리를 다시 해제하려합니다. 
  • FUM (freeing unallocated memory) -- 응용이 할당받지 않은 메모리를 해제하려합니다. 
  • ABWL (array bounds write, late detect) -- 배열의 경계가 깨졌음을 탐지했습니다. 
  • FMWL (free memory write, late detect) -- 응용이 이미 해제한 메모리에 쓰기를 하려합니다. 
  • MAF (memory allocation failure)
메모리 프로파일에서 식별하는 경고는 아래와 같습니다:
  • MLK (memory leak) -- 할당받은 메모리 블록에 대한 참조를 찾을 수 없어서, 메모리 누수로 판정합니다. 
  • MPK (potential memory leak) -- 할당받은 메모리 블록에 대한 참조는 찾을 수 있지만, 참조가 블록의 맨앞부분이 아닌 중간 어딘가를 가리키고 있습니다. 
  • MIU (memory in use) -- 할당받고 해제되지 않은 모든 메모리 블럭을 나열하고 각 블록에 대한 참조를 찾을수 있습니다. 
코드삽입(instrumentation) 단계동안, 응용 소스파일은 맨 먼저 전처리(preprocess)되고 새로운 임시 소스파일을 만듭니다. 전처리된 소스파일은 이후 툴의 루틴 호출을 포함한 코드가 삽입됩니다. 만약 응용의 소스코드에 메모리 할당/해제 문장 예를 들어 malloc 또는 free  등은 래쇼날 유틸리티 _atp_malloc과 _atp_free로 대체되어 호출됩니다. 이를 통해 툴은 힙(heap)으로 부터 할당된 모든 메모리를 추적할 수 있습니다. (만약 TestRealTime 설치했다면 _atp_malloc 구현부분을 ../Test RealTime/Targets/여러분의TDP/lib/atp.c에서 확인할 수 있습니다.) 마찬가지로, 만약 C++ 응용 코드에서 new 또는 delete 문장을 사용한다면, 래쇼날 유틸리티에서 오버로딩(overload)된 new와 delete 연산자(operator)로 대체됩니다.


응용이 힙(heap)으로 부터 새로운 블록을 할당할때 마다, 툴은 해당 블록에 대한 정보를 해시 테이블(hash table)에 저장합니다. 나중에 메모리 분석시에 해시 테이블에 저장된 메모리 블럭의 주소값을 다음 영역에서 검색을 합니다:
  • 각 쓰레드(thread)나 태스크(task)의 스택(stack) 데이터 
  • 글로벌(global)과 정적(static)에서 할당한 데이터 
  • 그 밖의 힙(heap)에서 할당받은 블럭 
만약 할당받은 메모리블럭에 대한 주소를 위 영역에서 찾을 수 없으면, 해당 블럭은 "누수"로 판정합니다


응용이 성공적으로 빌드되고 나면, 타겟으로 배포를 하고, 여느때처럼 실행을 합니다. 예를 들어 타겟에 대해 일상적인 회귀 시험을 할 수 있습니다. 실행동안 캡처한 데이터는 가능한 수단을 통해 호스트로 전송합니다. 예를 들어 만약 타겟에 파일 시스템이 있고 FTP 서비스를 지원한다면, FTP를 통해 파일을 전송할 수 있습니다. 혹은 디버거를 통해 전송할 수도 있습니다. 여러가지 가능한 방법 중에서 가장 적합한 방법을 활용하여 데이터를 호스트로 전송합니다. 호스트에 데이터를 파일로 전송한 이후에는 후처리(postprocess)를 하여 상세 보고에 필요한 정보를 생산해 냅니다.

댓글 없음:

댓글 쓰기