String sourceName = new File(ceylonSource).getName();
String traceFile = ceylonSource.replaceAll(".ceylon$", ".trace");
try (Tracer tracer = tracer(mainClass)) {
tracer.start();
// stop when we enter main()
MethodEntry entry = tracer.methodEntry().classFilter(mainClass).methodFilter("main").result(HandlerResult.SUSPEND).enable();
// resume until we hit that, then disable it
tracer.resume();
entry.disable();
// now log everything within DefaultedParameters.ceylon
Step step = tracer.step().within(sourceName).log().enable();
// and also listen out for when we exit main()
MethodExit exit = tracer.methodExit().classFilter(mainClass).methodFilter("main").result(HandlerResult.SUSPEND).enable();
// once we've exited main() disable the step breakpoint