Other Dev Tools

From D Wiki
Revision as of 00:47, 28 January 2013 by Hackerpilot (talk | contribs) (Created page with "== Valgrind helper == The Valgrind plugin Callgrind can be used to profile D code, but it does not know how to handle D's mangled names. This program can be used to clean up t...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Valgrind helper

The Valgrind plugin Callgrind can be used to profile D code, but it does not know how to handle D's mangled names. This program can be used to clean up the callgrind.out.nnnnn file so that tools like KCachegrind can display them more legibly.

Code

dcallgrind.d

import std.stdio;
import std.demangle;
import std.regex;
import std.conv;

auto re = ctRegex!(`(_D\d[\w_]+)`);

void main(string[] args)
{
    auto f = args.length > 1 ? File(args[1]) : stdin;
    foreach (l; f.byLine(KeepTerminator.yes))
        write(replace!(a => demangle(to!string(a.hit)))(l, re));
}

Usage

./dcallgrind callgrind.out.27497 > callgrind.out.27497.cleaned