Sayid is another debugger for Clojure. I’d link it but “new users can only include two links in a post”.
Note that your macro has a couple subtle flaws:
args get evaluated 3 times. Try changing an argument to (do (prn 'here) (+ 44 55)). here will get printed three times. Of course, depending on the side effect, this could be quite surprising to the caller.
result could conflict with a binding at the caller. For example, try calling your macro like so: (let [result (+ 44 55)] (verbosely! f result (+ 44 66))). Your macro will hijack the result binding out from under the caller.
To solve the latter problem, say result# instead of ~'result. This is called an “auto gensym”. A gensym is a generated symbol (see the gensym core function) that is guaranteed not to conflict with other bindings. An auto gensym is available within the scope of a syntax quote (starting with backtick), and all references at the same level of syntax quoting will resolve to the same symbol.
To solve the former problem, use another gensym for the arguments. The easy rule here is, if you need to use an argument to a macro in more than one place in the exception, DRY it out into an auto-gensym’d binding in a let block.
I wrote a blog post with these and other tips for writing macros in Clojure, but the blog is currently down. If you’re interested I could share that with you somehow.