Důležité!

Pozorně si přečtěte pokyny k výuce během rektorského volna!

Dr. Memory on macOS

Inštalačný súbor si stiahnite TU. (Priamy link)

Ovorte terminál. Ten nájdete v časti Launchpad > Others, alebo pomocou rýchleho vyhladávania: stlačte ⌘+Space a napíšte Terminal.

Presunte sa priečinku Downloads, prípadne do priečinku, v ktorom sa nachádza stiahnutý inštalačný súbor (Pomocou príkazov cd {directory}). Preveďte nasledujúcu postupnosť krokov.

Pozor! X.X.X-X bude nahradené vašou aktuálne stiahnutou verziou.

tar xzf DrMemory-MacOS-X.X.X-X.tar.gz   // rozbaľte tar.gz
mv DrMemory-MacOS-X.X.X-X drmemory      // premenujte priečinok
sudo mv drmemory /usr/local/            // presunte priečinok drmemory do /usr/local/ 

Následne modifikujeme shellovskú PATH, aby sa nám DrMemory lahšie spúšťal.

cd                  // presunte sa do Home adresara
nano .bash_profile  // otvorte súbor pre modifikáciu    

Otvorí sa súbor .bash_profile pripravený pre editovanie. Ak už tento súbor niečo obsahuje, nemažte to.
Do súboru vložte nasledovný riadok (stačí bežným skopírovaním).

export PATH="/usr/local/drmemory/bin/:$PATH"

Stlačte ctrl + o, následne Enter, na potvrdenie uloženia zmien. Potom stlačte ctrl+x, čím opustíte súbor a ukončíte editovanie.

Zavrite toto terminálove okno a otvorte nové (tento krok je podstatný!).
Napíšte do terminálu

drmemory

Mali by ste obdržať správu nasledujúceho formátu:

WARNING: this version of Mac OSX is not officially supported by Dr. Memory.

ERROR: no app specified

Usage: drmemory [options] -- <app and args to run>
Run with -help for full option list.
See http://drmemory.org/docs/ for more information.

Použitie DrMemory

Predpokladajme program pozostávajúci z jediného súboru main.c. Prítomnosť memory leakov prípadne správnu prácu s pamäťou vo vašom programe otestujete nasledovne.

Pozor! Flagy -m32 -g -fno-inline -fno-omit-frame-pointer sú pre kompiláciu potrebné, a binárka skompilovaná bez nich nemusí byť validným vstupom pre aplikáciu drmemory.

gcc -m32 -g -fno-inline -fno-omit-frame-pointer main.c -o main
drmemory -- main

Za príkaz gcc môžete samozrejme pridať flagy bežne používané v tomto predmete ako -Wextra, pre zjednodušenie sa v ukážke nenachádzajú.