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) -- 할당받고 해제되지 않은 모든 메모리 블럭을 나열하고 각 블록에 대한 참조를 찾을수 있습니다.
응용이 힙(heap)으로 부터 새로운 블록을 할당할때 마다, 툴은 해당 블록에 대한 정보를 해시 테이블(hash table)에 저장합니다. 나중에 메모리 분석시에 해시 테이블에 저장된 메모리 블럭의 주소값을 다음 영역에서 검색을 합니다:
- 각 쓰레드(thread)나 태스크(task)의 스택(stack) 데이터
- 글로벌(global)과 정적(static)에서 할당한 데이터
- 그 밖의 힙(heap)에서 할당받은 블럭
응용이 성공적으로 빌드되고 나면, 타겟으로 배포를 하고, 여느때처럼 실행을 합니다. 예를 들어 타겟에 대해 일상적인 회귀 시험을 할 수 있습니다. 실행동안 캡처한 데이터는 가능한 수단을 통해 호스트로 전송합니다. 예를 들어 만약 타겟에 파일 시스템이 있고 FTP 서비스를 지원한다면, FTP를 통해 파일을 전송할 수 있습니다. 혹은 디버거를 통해 전송할 수도 있습니다. 여러가지 가능한 방법 중에서 가장 적합한 방법을 활용하여 데이터를 호스트로 전송합니다. 호스트에 데이터를 파일로 전송한 이후에는 후처리(postprocess)를 하여 상세 보고에 필요한 정보를 생산해 냅니다.
댓글 없음:
댓글 쓰기