이 페이지에서

Heob

Heob으로 메모리 누수를 탐지하세요.

Heob에 대한 설정을 지정하려면 Analyze > Heob 으로 이동하세요.

홉 설정

Extra arguments 에서 Heob 실행을 위한 추가 인수를 입력합니다. Heob 콘솔에서 사용 가능한 인수를 나열하려면 이 필드에 -H 을 입력하고 Enter 를 선택합니다.

예를 들어, -oleaks.html 옵션을 사용하여 유출 데이터를 HTML 파일에 기록합니다. 이 옵션과 함께 -g2 옵션을 사용하여 파일에서 시각적으로 유출을 그룹화하고 -L1024 옵션을 사용하여 파일에 최대 1024바이트까지 유출 내용을 기록할 수 있습니다. 예를 들어 -oleaks.html -g2 -L1024

변경 내용을 기본 설정으로 저장하려면 저장 을 선택합니다.

사용자 지정 설정 프로필을 제거하려면 해당 프로필을 선택한 다음 Delete 을 선택합니다.

다음 섹션에서는 사용 가능한 옵션에 대해 자세히 설명합니다.

녹화 결과

검사 결과는 Memcheck 보기에 표시되고 파일에 기록됩니다. 파일 이름을 XML output file 에 지정합니다. Heob이 프로젝트 디렉터리에 파일을 만듭니다.

파일 이름에 프로세스 식별자(PID)를 변수로 사용할 수 있습니다. 예를 들어 leaks-%p.xml. 이렇게 하면 하위 프로세스에도 Heob이 주입됩니다.

사용할 수 있는 다른 변수는 부모 PID에 %P, 애플리케이션 이름에 %n 등이 있습니다.

변수를 사용하는 경우 Qt Creator 은 파일을 자동으로 열 수 없지만 프로젝트 디렉터리에서 열 수 있습니다.

예외 처리하기

Handle exceptions 에서 Off 을 선택하여 표준 예외 처리기를 사용하고 애플리케이션이 충돌하는 경우 디버거가 자동으로 첨부되도록 합니다. 이는 환경설정 > Debugger > General > Qt Creator 을 선택하여 사후 디버거로 등록한 경우에만 작동합니다. Use Qt Creator for post-mortem debugging.

충돌의 원인과 위치를 확인하고 버퍼 오버런으로 인해 충돌이 발생했는지 여부를 감지하는 Heob 예외 처리기를 사용하려면 On 을 선택하세요.

예외 처리기 설치를 제외한 모든 Heob 기능을 비활성화하려면 Only 을 선택합니다. 애플리케이션이 충돌하면 충돌에 대한 스택 추적만 표시됩니다. 따라서 이 옵션은 콘솔에서 Heob을 사용하거나 자식 프로세스에서 실행할 때 주로 유용합니다.

오류 발생 시 예외 발생하기

애플리케이션이 실행될 때 오류를 표시하려면 Raise breakpoint exception on error 확인란을 선택합니다.

이 옵션을 비활성화하면 더블 프리, 유효하지 않은 포인터 없음, 메모리 부족과 같은 오류는 수집된 모든 데이터를 결과 파일에 쓰고 애플리케이션 실행이 끝날 때만 표시됩니다.

이 옵션을 활성화하면 애플리케이션이 오류 위치에서 중지됩니다. 이 옵션은 주로 디버거에서 Heob을 실행하는 Run with debugger 옵션과 함께 사용할 때 유용합니다.

페이지 보호

Page protection 에서 Off 을 선택하여 표준 메모리 할당 기능을 사용하고 메모리 누수 감지만 활성화합니다.

After 을 선택하여 할당된 각 블록의 끝에 보호 페이지를 배치하고 액세스 시 예외를 발생시키세요. Before 을 선택하면 할당된 각 블록 앞에 보호된 페이지를 배치합니다. 이 옵션은 메모리를 소모하고 검사 속도가 느려지므로 64비트 또는 단기 실행 프로그램에만 권장됩니다.

Freed memory protection 을 선택하면 해제 시 모든 할당 페이지를 보호하여 해당 주소 공간을 다시 사용할 수 없도록 합니다. 이 옵션은 사용 후 해제이중 해제 감지에 유용합니다. 그러나 32비트 프로그램의 경우 사용 가능한 메모리 주소 공간이 빨리 소진될 수 있습니다.

유출 데이터 처리하기

Leak details 에서 프로세스가 종료될 때 수집된 유출 데이터를 처리할 방법을 결정합니다. None 을 선택하면 유출 데이터가 수집되지 않습니다. 누출 유형 감지를 활성화하면 프로세스가 종료될 때 Heob이 데이터를 수집하는 데 시간이 더 필요할 수 있습니다.

Simple 을 선택하면 해제되지 않은 모든 메모리를 결과 파일에 기록합니다.

Detect Leak Types 을 선택하여 모든 정적 및 전역 메모리 블록을 구문 분석하여 누수에 대한 참조를 찾습니다. 도달 가능한 블록은 도달 가능으로 표시되고 다른 참조가 있는지 재귀적으로 확인됩니다. 참조가 발견되면 해당 블록은 간접적으로 도달 가능으로 표시됩니다. 나머지 블록은 서로에 대한 참조가 있는지 확인하여 간접적으로 손실 되거나 공동으로 손실된 것으로 표시합니다(블록이 서로를 참조하는 경우). 참조가 전혀 없는 블록은 손실됨으로 표시됩니다. Detect Leak Types (Show Reachable) 을 선택하여 결과 파일에 도달 가능한 블록도 기록합니다.

Fuzzy Detect Leak Types 을 선택하면 메모리 블록에 주소에 대한 참조가 있는 경우 도달 가능 또는 간접적으로 손실된 것으로 표시됩니다. 이 옵션은 할당 블록 내부 어딘가에 주소만 보관하고 할당된 블록의 시작을 직접 참조하지 않는 일부 사용자 지정 할당자(예: ffmpegav_malloc() )와 함께 사용할 때 유용합니다. Detect Leak Types (Show Reachable) 을 선택하여 결과 파일에 도달 가능한 블록도 기록합니다.

Minimum leak size 에서 탐지할 누수 크기를 바이트 단위로 선택합니다.

Control leak recording 에서 Off 을 선택하여 모든 누출을 기록합니다. 실행 중에는 유출 기록을 변경할 수 없습니다.

유출 기록을 시작하지 않고 Heob을 시작하려면 On (Start Disabled) 을 선택합니다. Heob 콘솔에서 on 또는 off, clear 모든 결과를 기록하거나 show 을 선택하여 현재 모든 누출을 결과 파일에 기록합니다. 프로세스가 종료되기 전에 파일을 열어 내용을 확인합니다.

Heob이 시작될 때 유출 기록을 시작하고 기록을 제어할 수 있는 옵션을 계속 사용하려면 On (Start Enabled) 을 선택하세요.

Heob으로 메모리 누수 탐지하기, 방법: 분석, 분석기코드 분석하기를참조하세요 .

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.