Возник аналогичный вопрос.
Похоже есть ещё какое-то дополнительное сакральное знание...
Создаю в лазарусе (версия 1.2 для Win32, установка по умолчанию) новый проект (Простая программа):
- Код: Выделить всё
 program heap;
var
  a, b: pointer;
begin
  getmem(a,100);
  getmem(b,200);
  freemem(b);
  //freemem(a);
end.
Отмечаю галку -gh в параметрах проекта. -gl уже была по умолчанию, -Xs и -Xg не трогаю (по умолчанию и так выключены).Компилирую, получаю файл размером 86817 байт. Запускаю в командной строке. Он выводит 
- Код: Выделить всё
 Heap dump by heaptrc unit
2 memory blocks allocated : 300/304
1 memory blocks freed     : 200/200
1 unfreed memory blocks : 100
True heap size : 131072 (128 used in System startup)
True free heap : 130768
Should be : 130776
Call trace for block $00096348 size 100
  $00407DC1
  $554C4C41
  $53524553
  $464F5250
  $3D454C49
  $445C3A43
  $6D75636F
  $73746E65
 Пробовал то же самое собирать в командной строке `\lazarus\fpc\2.6.2\bin\i386-win32\ppc386.exe -gh -gl heap.lpr` - файл получается точно такой же.
Меня смущает то, что получаемый файл не зависит от наличия или отсутствия ключа "-Xs", то есть вероятно где-то ещё глобально эти символы отключены. Но от ключа -gl размер и адрес в строке "Call trace for block"зависит. При его отсутствии файл получается меньше (75369 байт) и первый адрес меняется на $000961E0.
Пробовал то же самое c версией 1.2 под Win64 - размер файла и адреса конечно другие, но суть та же. Подробной отладочной информации не выводит.