目前调试一个模块时比较麻烦,需要重新编译成调试版本,即增加DEBUG宏或debug_info等信息重新编译。
想要达到这种效果:想调试某个模块时直接调用test:debug()自动转换成调试模式,这样方便一点。
即效果如下:
Eshell V5.8.3 (abort with ^G) 1> c(test). {ok,test} 2> test:test(1). 2 3> test:debug(). {ok,test} 4> test:test(1). test(1) = 2 2 5>
于是可以这样写:
-module(test). -compile(export_all). -ifdef(DEBUG). -define(LOG(Format), io:format(Format)). -define(LOG(Format, Data), io:format(Format, Data)). -else. -define(LOG(Format), ok). -define(LOG(Format, Data), ok). -endif. test(N) when is_integer(N) -> R = N + N, ?LOG("test(~p) = ~p~n", [N, R]), R. debug() -> debug(true). debug(true) -> c:c(?MODULE, [{d, 'DEBUG'}]); debug(false) -> c:c(?MODULE, []).