Difference between revisions of "Other Dev Tools"
(Section about the excellent, interactive D compiler.) |
(Added the MiniLibD section.) |
||
Line 30: | Line 30: | ||
If you want to see the assembly your D code compiles to, please use the following [http://d.godbolt.org/ Interactive D compiler]. | If you want to see the assembly your D code compiles to, please use the following [http://d.godbolt.org/ Interactive D compiler]. | ||
+ | |||
+ | == MiniLibD - Embedded D usage == | ||
+ | |||
+ | This collection has libraries and tools to compile D language programs for | ||
+ | embedded systems with the gdc compiler. | ||
+ | |||
+ | The original D runtime library uses libraries from the operating system. | ||
+ | It can not be used in embedded systems when there is no operating | ||
+ | system. | ||
+ | |||
+ | [https://bitbucket.org/timosi/minlibd Get the source]. |
Revision as of 11:08, 2 April 2013
Contents
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 isStdin = args.length == 1;
auto inFile = isStdin ? stdin : File(args[1]);
auto outFile = isStdin ? stdout : File(args[1] ~ ".demangled", "w");
foreach (l; inFile.byLine(KeepTerminator.yes))
outFile.write(replace!(a => demangle(to!string(a.hit)))(l, re));
}
Usage
./dcallgrind callgrind.out.27497
This will create a file called callgrind.out.27497.demangled that you can then view using KCachegrind.
Interactive D Compiler
If you want to see the assembly your D code compiles to, please use the following Interactive D compiler.
MiniLibD - Embedded D usage
This collection has libraries and tools to compile D language programs for embedded systems with the gdc compiler.
The original D runtime library uses libraries from the operating system. It can not be used in embedded systems when there is no operating system.