gnatmem
gccのMakefileですとgnatmemは作られないしMinGWにはlibaddr2line.aが無いため作れないのですが、そこはそれ、GNAT GPLには付いてきます。
どーせgmem.outのフォーマットなんて変わっちゃいないだろうと思ったら案の定でした。
procedure test is x : access integer := new integer'(1); begin null; end;
...>gnatmake -g -gnat05 test -largs -lgmem -bargs -E gccのgnatmakeとlibgmem.a gcc -c -g -gnat05 test.adb gnatbind -aO./ -E -I- -x test.ali gnatlink test.ali -g -lgmem ...>gnatmem test GNAT GPLのgnatmem.exe Global information
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
きちんと検出できてます。s-secsta.adbの495行が、なんでこの行が引っかかってるのか謎ですが。
MinGWではCランタイムはmsvcrt.dllですが、これをBorlandのものと挿げ替えて、fastmmでReportMemoryLeaksOnShutdown := True;なんてのもやってみたいなあなど妄想中。
あー、思い出しましたけど、pragma Finalize_Storage_Onlyなんつーものもありましたね。どうせメモり開放するだけなんで終了時にデストラクタなんて走らさなくていいよ宣言。