<div dir="ltr">The major difference is that you can trace intermediary results without polluting the code with dummy ?trace calls. Having the variables selected automatically is nice too, no way to forget some or refer to the wrong one. Some more advanced stuff can be done too, like only tracing variables whose values have changed.<div><br></div><div>In other words, why do things manually if it was possible and efficient to have them don for you by the compiler?<br><div><br></div><div>regards,</div><div>Vlad</div><div><br><div><br></div><div><br></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 13, 2015 at 1:54 PM, Fred Hebert <span dir="ltr"><<a href="mailto:mononcqc@ferd.ca" target="_blank">mononcqc@ferd.ca</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 01/13, Vlad Dumitrescu wrote:<br>
> So, I thought, what if, instead of interpreting a module in order to debug<br>
> it, we compile it with a special parse transform that inserts tracing calls<br>
> after each expression in the code, automatically keeping track of the<br>
> variables visible in the scope and their values?<br>
><br>
> The output can be via io:format, et:report_event, or something else<br>
> (configurable).<br>
><br>
> Could this "trogging" or "logtracing" be useful, or am I delusional? Maybe<br>
> there already is such a thing, the Erlang ecosystem is getting difficult to<br>
> keep in the working memory :-)<br>
><br>
<br>
</span>How would this be different from tracing BIFs and the libraries built on<br>
top? These even let you specify things if you want to look at values put<br>
in a function, and returned from it.<br>
<br>
I'm guessing the part that's too annoying could be selecting the<br>
functions that require tracing, maybe? Or that adding debug id functions<br>
(`trace(X) -> X.', then trace on ?MODULE:trace/1) is too cumbersome?<br>
<br>
You could probably use stuff like xref to find all calls that take place<br>
in a module, and then fill the input into trace BIFs to get an<br>
equivalent result, though there's probably no great scaffolding in place<br>
for this today.<br>
</blockquote></div><br></div>