
Memoro: 상세한 힙 프로파일러
Memoro는 매우 상세한 힙 프로파일러입니다.
Memoro는 프로그램이 힙 할당을 하는 위치와 시기를 보여줄 뿐만 아니라, 프로그램이 해당 메모리를 실제로 어떻게 사용했는지도 보여줍니다.
Memoro는 힙에 대한 접근(메모리 읽기 및 쓰기와 그 시기 포함)에 대한 상세 정보를 수집하여 프로그램이 힙 메모리를 얼마나 효율적으로 사용하는지 파악할 수 있게 해줍니다.
Memoro는 이 모든 정보를 점수와 지표로 요약하여 문제 영역을 정확히 찾아내는 데 도움을 주는 시각화 애플리케이션을 포함합니다.

Memoro 작동 방식에 대한 자세한 내용은 여기를 참조하세요.
아래 단계는 Memoro 사용을 위한 빠른 시작 가이드를 요약한 것입니다. 자세한 설정 지침은 여기를 참조하세요. Memoro 사용 가이드는 여기를 참조하세요.
먼저, Memoro 계측으로 코드를 컴파일할 수 있도록 LLVM/Clang의 로컬 버전을 빌드해야 합니다. 미리 빌드된 릴리스는 아직 제공되지 않지만, 충분한 사람들이 요청한다면 여기에 호스팅할 수도 있습니다.
LLVM/Clang 빌드 지침 여기를 따르되, 아래 나열된 특정 리포지토리를 사용하세요. Memoro는 아직 LLVM/Clang 개발 브랜치에 포함되지 않았습니다.
SVN 대신 git 미러 리포지토리를 사용하는 것이 좋습니다. 기본 LLVM 리포지토리, Clang 리포지토리 및 CompilerRT 리포지토리의 경우 Memoro 버전을 사용하세요:
이 리포지토리는 기본적으로 memoro_80 브랜치로 설정되어 있어야 합니다.
다음 명령으로 이 리포지토리를 클론합니다: git clone [email protected]:epfl-vlsc/memoro.git
해당 디렉토리로 들어갑니다.
$ cd memoro
모든 JS 종속성이 있는지 확인하려면 npm install을 실행하세요. 그런 다음 C++ 데이터 처리 애드온을 빌드해야 합니다. 이를 위해 먼저 node-gyp를 설치해야 할 수도 있습니다 (npm install -g node-gyp)
그런 다음,
cd cpp
node-gyp build --release --target=1.7.9 --arch=x64 --dist-url=https://atom.io/download/electron
cd ..
target은 기본 앱을 실행하는 데 사용되는 일렉트론 버전과 일치해야 합니다. 필요에 따라 조정하세요. 또한 필요에 따라 arch를 조정하세요. 하지만 비-*nix x64 시스템에서는 아직 테스트하지 않았습니다. 대부분의 사용자에게 작동하는 Makefile도 있습니다.
당연히 node-gyp를 사용하려면 C++ 컴파일러가 설치되어 있어야 합니다.
먼저, 이전에 빌드한 LLVM/Clang을 사용하여 프로파일링하려는 소프트웨어를 빌드합니다. 계측을 추가하려면 컴파일러 플래그 -fsanitize=memoro를 추가하고, 좋은 스택 트레이스를 얻으려면 선택적으로 -fno-omit-frame-pointer를 추가하세요. 별도의 링킹 단계가 있는 경우 Memoro/Sanitizer 런타임이 링크되도록 이 단계에도 -fsanitize=memoro가 필요할 수 있습니다. 스택 트레이스에 LLVM 심볼라이저를 사용하는 것이 좋습니다. 환경 변수 MEMORO_SYMBOLIZER_PATH를 llvm-symbolizer가 위치한 경로로 설정하세요. 또는 PATH에 포함시키기만 해도 됩니다.
프로그램을 실행합니다. 완료 후 Memoro 런타임은 *.trace와 *.chunks 두 파일을 생성합니다. 이 파일들은 시각화 도구를 사용하여 열고 볼 수 있습니다.
C++ 애드온을 빌드한 후, 리포지토리 디렉토리에서 직접 앱을 실행할 수 있습니다.
electron .
파일->열기 또는 Cmd/Ctrl-O를 눌러 열고, 트레이스 또는 청크 파일을 찾아 선택합니다.
힙 문제를 찾는 즐거움을 누리세요 :-)
electron-packager를 사용하여 모든 코드와 에셋을 애플리케이션 패키지로 수집 및 내보냅니다.
electron-packager . --overwrite --platform=<platform> --arch=x64 --electron-version=1.7.9 --icon=assets/icons/icon64.icns --prune=true --out=release-builds
필요에 따라 platform, arch, electron 버전을 다시 조정하세요.
기여는 언제나 환영합니다. 풀 리퀘스트를 제출하거나 연락 주세요.