I just put this in here: svn commit Sending source/Plugins/Process/gdb-remote/GDBRemoteCommunication.cpp Transmitting file data . Committed revision 216745.
On Thu, Aug 28, 2014 at 10:51 PM, Todd Fiala <[email protected]> wrote: > 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 > > -- Todd Fiala | Software Engineer | [email protected] | 650-943-3180
_______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
