I'm going to put this in since I haven't heard any feedback on it.
On Tue, Jul 29, 2014 at 10:02 AM, Todd Fiala <[email protected]> wrote: > BTW - I'm using LLDB_DEBUGSERVER_* as the prefix because there are already > some more-specialized environment variables for similar tasks that start > with that prefix. Over time I could see DEBUGSERVER just becoming > synonymous with llgs/stub/debug monitor/nub. > > > On Tue, Jul 29, 2014 at 9:59 AM, Todd Fiala <[email protected]> wrote: > >> This patch accepts environment variables of the form: >> LLDB_DEBUGSERVER_EXTRA_ARG_n >> >> where n starts with 1, and may continue nearly indefinitely (up through >> std::numeric_limits<uint32_t>::max()). >> >> The code loops around, starting with 1, until it doesn't find one of the >> environment variables. For each one it does find defined, it appends the >> environment variable's contents to the end of the debugserver/llgs startup >> command line issued when the stub is started for local debugging. >> >> I am using this to add arbitrary startup commands to the llgs command >> line for turning on additional logging. For example: >> >> export LLDB_DEBUGSERVER_EXTRA_ARG_1="-c" >> export LLDB_DEBUGSERVER_EXTRA_ARG_2="log enable -f /tmp/llgs_packets.log >> gdb-remote packets" >> export LLDB_DEBUGSERVER_EXTRA_ARG_3="-c" >> export LLDB_DEBUGSERVER_EXTRA_ARG_4="log enable -f /tmp/llgs_process.log >> lldb process" >> >> Patch follows... >> >> diff --git a/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp >> b/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp >> index be90eb2..d67bbdb 100644 >> --- a/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp >> +++ b/source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp >> @@ -817,7 +817,25 @@ GDBRemoteCommunication::StartDebugserverProcess >> (const char *hostname, >> ::snprintf (arg_cstr, sizeof(arg_cstr), "--log-flags=%s", >> env_debugserver_log_flags); >> debugserver_args.AppendArgument(arg_cstr); >> } >> - >> + >> + // Add additional args, starting with >> LLDB_DEBUGSERVER_EXTRA_ARG_1 until an env var doesn't come back. >> + uint32_t env_var_index = 1; >> + bool has_env_var; >> + do >> + { >> + char env_var_name[64]; >> + snprintf (env_var_name, sizeof (env_var_name), >> "LLDB_DEBUGSERVER_EXTRA_ARG_%" PRIu32, env_var_index++); >> + const char *extra_arg = getenv(env_var_name); >> + has_env_var = extra_arg != nullptr; >> + >> + if (has_env_var) >> + { >> + debugserver_args.AppendArgument (extra_arg); >> + if (log) >> + log->Printf ("GDBRemoteCommunication::%s adding env >> var %s contents to stub command line (%s)", __FUNCTION__, env_var_name, >> extra_arg); >> + } >> + } while (has_env_var); >> + >> // Close STDIN, STDOUT and STDERR. We might need to redirect them >> // to "/dev/null" if we run into any problems. >> launch_info.AppendCloseFileAction (STDIN_FILENO); >> >> >> -- >> -Todd >> > > > > -- > -Todd > -- -Todd
_______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
