gdb-remote logging question


I was looking into source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServer.cpp in order to improve logging for some corner cases - for example, attach to process failure. And got confused by logging style mixture - sometimes gdb-remote channel logging is used (via ProcessGDBRemoteLog::GetLogIfAllCategoriesSet(GDBR_LOG_,…)) or more often lldb channel is utilized (GetLogIfAnyCategoriesSet(LIBLLDB_LOG_…)).

Does it make sense to log everything within source/Plugins/Process/gdb-remote to gdb-remote channel only? As I can see lldb-gdbserver (cannot say for OSX debugserver and lldb-platform) allows to save log output as a file only for gdb-remote channel and lldb channel has no chance to be saved anywhere .

Thank you.

ProcessGDBRemoteLog::GetLogIfAllCategoriesSet() is for logging specific the GDB remote plug-in used with:

(lldb) log enable gdb-remote ...

GetLogIfAnyCategoriesSet(...) is used when doing generic LLDB logging:

(lldb) log enable lldb process ...

So use the latter for generic process plug-in logging (like launching, attaching, etc). Then for packet stuff or other things specify only to the GDB remote part in the former.


I see. My mistake was that I hadn’t realized how to grab non gdb-remote logging (e.g., lldb channel) that is coming from gdbserver - since now it’s clear to me how to get lldb log output from gdbserver, such log separation is logical.

Thank you.