Hi all,

In case you haven't noticed, I'd like to draw your attention to the in-flight patches (https://reviews.llvm.org/D117382, https://reviews.llvm.org/D117490) whose goal clean up/improve/streamline the logging infrastructure.

I'm don't want go into technical details here (they're on the patch), but the general idea is to replace statements like GetLogIf(Any/All)CategoriesSet(LIBLLDB_LOG_CAT1 | LIBLLDB_LOG_CAT2)
with
GetLogIf(Any/All)(LLDBLog::Cat1 | LLDBLog::Cat2)
i.e., drop macros and make use of templates to make the function calls shorter and safer.

The reason I'm writing this email is to ask about the "All" versions of these logging functions. Do you find them useful in practice?

I'm asking that because I've never used this functionality. While I can't find anything wrong with the concept in theory, practically I think it's just confusing to have some log message appear only for some combination of enabled channels. It might have made some sense when we had a "verbose" logging channel, but that one is long gone (we still have a verbose logging *flag*).

In fact, out of all our GetLogIf calls (1203), less than 1% (11*) uses the GetLogIfAll form with more than one category. Of those, three are in tests, one is definitely a bug (it combines the category with LLDB_LOG_OPTION_VERBOSE), and the others (7) are of questionable usefulness (to me anyway).

If we got rid of this, we could simplify the logging calls even further and have something like:
Log *log = GetLog(LLDBLog::Process);
everywhere.

cheers,
pl

(*) I used this command to count:
$ git grep -e LogIfAll -A 1 | fgrep -e '|' | wc -l
_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to