Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr
  • [엠바카데로 UX SUMMIT 2021] RAD 스튜디오 안에서 메모리 누수 탐지하기


    Kori
     공유하기

    << UX Summit 2021 목록으로 이동

    UX Summit 의 2021 시리즈 중, Find leaks without leaving RAD Studio - Artem Razin 의 한국어 더빙 비디오입니다.

    Deleaker델파이와 C++빌더에서 사용되는 메모리 누수 (Memory Leak) 탐지 도구들 중에서 전용 도구 중 유일한 전용 도구이다.
    이 제품이 유료인 이유는 사용해보면 알 수 있다. 메모리 누수 감지를 위한 정말 좋은 기능들이 제공된다.

    Delphi 시연 부분 보기
    C++빌더 시연 부분 (7분 32초 부터) 보기

    참고: RAD 스튜디오 안에서 메모리 누수 탐지하기(한국어 더빙) 시 사용한 스크립트 
    [00:18] Deleaker는 RAD 스튜디오에 플러그인 되어 메모리 누수를 탐지하고 리소스 사용을 효율적으로 최적화합니다.
    [00:27] 이 비디오에서는 Deleaker가 RAD 스튜디오 10.4 시드니에 어떻게 통합되는지 그리고, 개발자가 어떻게 메모리 누수를 찾고 해소하는 지를 보여줍니다. 
    [00:36] Deleaker 설치파일을 실행합니다.
    [00:50] 설치되어 있는 RAD 스튜디오의 버전이 표시됩니다. 여기에 Deleaker가 통합됩니다.
    [01:06] RAD 스튜디오 10.4 시드니에 Deleaker를 통합하겠습니다.
    [01:17] 준비되었습니다.
    [01:21] 이제 RAD 스튜디오를 시작하겠습니다.
    [01:55] Deleaker 창은 언제든 RAD 스튜디오의 Deleaker 메뉴에서 열 수 있습니다.
    [02:09] 새 윈도우 VCL 애플리케이션을 만들겠습니다. 
    [02:32] 프로젝트를 빌드하고 실행합니다.
    [03:02] RAD 스튜디오로 돌아와서 Deleaker 창을 열고 [Snapshot]을 클릭합니다.
    [03:22] 현재 살아있는 오브젝트를 보겠습니다. 클래스 이름별로 그룹핑 되어 있습니다.
    [03:36] 여기에 MainForm과 다른 오브젝트들이 보입니다.
    [03:42] 각 오브젝트마다 해당 크기, 소스파일, 호출 스택이 표시됩니다.
    [03:58] 이제 애플리케이션를 종료하겠습니다.
    [04:01] 애플리케이션 프로세스가 종료되면 Deleaker는 스냅샵을 찍기 시작합니다.
    [04:08] 누수가 없습니다. 예상대로입니다.
    [04:21] 누수를 만들어보겠습니다.
    [04:25] 폼에 버튼을 추가합니다.
    [04:33] 이름을 적습니다.
    [04:54] 버튼을 더블 클릭하여 이벤트 핸들러를 추가합니다.
    [04:58] 메모리를 하나 할당하고, TStringList 오브젝트도 하나 생성하겠습니다.
    [05:31] 지금 만든 누수를 Deleaker가 찾아낼 것입니다.
    [05:43] 빌드하고 실행합니다.
    [05:58] 누수가 생기도록 버튼을 몇번 클릭합니다.
    [06:05] 애플리케이션을 종료하겠습니다. 그러면 Deleaker가 스냅샷을 준비합니다.
    [06:13] Deleaker가 메모리 누수를 발견했습니다. 각 누수마다 발생 횟수, 크기, 소스 파일명, 호출 스택이 표시됩니다.
    [06:27] 누수되는 오브젝트를 찾기 위해 [Delphi Objects]를 클릭합니다.
    [06:31] Deleaker가 해당 TStringList 오브젝트를 찾아냈습니다.
    [06:37] 여기에 호출 스택이 표시됩니다.
    [06:42] 해당 소스 코드로 이동하려면 호출 스택에서 마우스 오른쪽을 클릭하고 Show Source Code를 선택합니다.
    [06:50] Deleaker에 의해 소스 파일이 열리고, 누수되는 오브젝트가 있는 줄에 커서가 위치합니다.
    [06:56] Deleaker로 돌아와 Allocation에서 메모리 할당 중 하나를 선택해 보겠습니다.
    [07:00] 메모리를 할당하는 GetMem 함수가 있는 줄로 찾아갑니다.
    [07:06] 최종 스냅샷에는 누수된 메모리와 해당 오브젝트의 크기, Hit Count, 횟수, 값과 모듈 정보가 모두 들어있습니다. 소스코드에서 할당된 리소스의 위치를 찾아가기도 쉽습니다.
    [07:30] Deleaker와 프로젝트를 모두 종료하겠습니다.
    [07:32] 이번에는 C++빌더로 비슷한 애플리케이션을 만들겠습니다.
    [07:50] 프로젝트가 준비되었습니다. 빌드하고 실행합니다.
    [08:25] 애플리케이션을 종료하지 않은 상태에서 개발툴로 가서, Deleaker창을 열고 [Snapshot]을 클릭하겠습니다.
    [08:38] 메모리 할당이 많이 표시됩니다.
    [08:42] 현재 살아있는 오브젝트들도 보입니다.
    [08:45] 오브젝트들은 클래스 이름 별로 그룹핑되어 있습니다
    [08:49] 각 오브젝트 마다 호출 스택을 살펴볼 수 있습니다.
    [08:54] Deleaker와 애플리케이션을 종료합니다.
    [09:02] Deleaker가 글로벌 오브젝트 2개를 찾았네요. 좋아요.
    [09:13] 메모리 누수를 만들어보겠습니다.
    [09:16] 화면에 버튼을 놓고 이름을 줍니다.
    [09:27] 버튼을 더블클릭하여 이벤트 핸들러를 엽니다.
    [09:32] 메모리 누수 두개를 만들겠습니다.
    [09:57] 디버깅을 시작하겠습니다.
    [10:12] 버튼을 몇번 클릭하여 누수를 만듭니다.
    [10:16] 화면을 종료하면 Deleaker가 스냅샷을 찍습니다.
    [10:23] 스냅샷이 준비되었습니다.
    [10:26] Deleaker는 누수되는 오브젝트를 찾았습니다.
    [10:32] 여기에 해당 호출 스택이 있습니다.
    [10:34] 이 호출 스택에서 마우스 오른쪽을 클릭하고, Show Source Code 를 선택하여 누수가 발생하는 소스로 이동합니다.
    [10:40] 코드 편집기가 열리고 정확한 위치에 커서가 놓여있습니다. 좋네요.
    [10:44] Allocations를 열어보면 new 연산자에서 누수가 생긴 다는 것을 알게 됩니다.
    [10:51] Allocations에서 오른쪽 클릭을 하고, Show Source Code를 선택하여 소스 코드로 이동합니다.
    [10:58] 네, 정확한 코드 위치로 이동하였습니다.
    [11:02] Deleaker는 델파이와 C++빌더에서 사용할 수 있는 메모리 프로파일러입니다.
    [11:06] 개발자는 메모리 손실을 고칠 수 있고 윈도우 핸들과 기타 리소스의 누수 역시 고칠 수 있습니다.
    [11:10] RAD 스튜디오에 밀접하게 통합되기 때문에,개발 환경을 벗어날 필요없이 누수가 있는 코드로 바로 이동할 수 있습니다.
    [11:18] 행복한 코딩을 하시기 바랍니다.

    << UX Summit 2021 목록으로 이동

     공유하기


    User Feedback

    Recommended Comments

    There are no comments to display.


×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.