r-lib / debugme

Easy and efficient debugging for R packages
https://r-lib.github.io/debugme/
Other
149 stars 10 forks source link

use a filter to select debugging by level like Smart::Comment do #12

Closed kforner closed 6 years ago

kforner commented 7 years ago

Hi Gabor,

I have just discovered your package and I am already a big fan ! Do you know the Smart::Comment perl package ? It uses the same kind of approach, using comments instead of string litterals (which you can not since R discards them in parsed code).

You set the level of the debugging by the number of '#', eg. ### is a level 1 debug #### is a level2 debug and you can select the debugging level at execution time using the Smart_Comment env var, e.g. Smart_Comment=###:#### ./my_script.pl which I think is nice since when you want to debug a script, you do not a priori know which packages it uses (can be indirect), so selecting the package via DEBUGME might not be the most convenient approach.

Maybe the syntax could be expanded like this: DEBUGME=mypkg : turns on debugging for mypkg DEBUGME=mypkg:1 turns on debugging level 1 for mypkg DEBUGME=mypkg1:1,mypkg2:3 DEBUGME=1 turns on debugging level 1 for all packages

What do you think ?

Karl

gaborcsardi commented 7 years ago

I have just discovered your package and I am already a big fan !

Thanks!

Do you know the Smart::Comment perl package ? It uses the same kind of approach, using comments instead of string litterals (which you can not since R discards them in parsed code).

Yeah, that's why I am using string literals.

You set the level of the debugging by the number of '#', eg. ### is a level 1 debug #### is a level2 debug and you can select the debugging level at execution time using the Smart_Comment env var, e.g. Smart_Comment=###:#### ./my_script.pl which I think is nice since when you want to debug a script, you do not a priori know which packages it uses (can be indirect), so selecting the package via DEBUG_ME might not be the most convenient approach. What do you think ?

I thinks these are great ideas! AFAICT there are two possible improvements that we could make. One is setting the debug level of the messages, the way you propose. I would you exclamation marks, so that it is compatible with the current syntax:

"!DEBUG level 1"
...
"!!DEBUG level 2"
etc.

The other is auto-debugging. TBH I am not sure if this is useful enough in practice, because most packages do not use debugme. But I can imagine two improvements for it:

What do you think?

kforner commented 7 years ago

[I've updated my previous post]

I agree with the ! to indicate the debugging level.

as I wrote, maybe just DEBUGME=":1" to turn on debugging level 1 for all packages ?

gaborcsardi commented 7 years ago

Cool. Yeah, basically we just need to work out a good syntax now. I see your point about DEBUGME=":1". I like the explicit DEBUGME="all" as well. So how about sg like this:

DEBUGME="pkg1,pkg2"
DEBUGME="!!pkg1,pkg2"
DEBUGME="all"
DEBUGME="!!!all"
DEBUGME="all,-except1,-except2"
DEBUGME="!!!all,-except1"
kforner commented 7 years ago

looks good !

gaborcsardi commented 6 years ago

OK, log levels are now supported. all and the -package notation are not yet. I'll open separate issues for those.