ProcessInstanceInfo(),
m_plugin_name (),
m_resume_count (0),
- m_wait_for_launch (false)
+ m_wait_for_launch (false),
+ m_continue_once_attached (false)
{
}
ProcessInstanceInfo(),
m_plugin_name (),
m_resume_count (0),
- m_wait_for_launch (false)
+ m_wait_for_launch (false),
+ m_continue_once_attached (false)
{
ProcessInfo::operator= (launch_info);
SetProcessPluginName (launch_info.GetProcessPluginName());
m_wait_for_launch = b;
}
+ bool
+ GetContinueOnceAttached () const
+ {
+ return m_continue_once_attached;
+ }
+
+ void
+ SetContinueOnceAttached (bool b)
+ {
+ m_continue_once_attached = b;
+ }
+
uint32_t
GetResumeCount () const
{
std::string m_plugin_name;
uint32_t m_resume_count; // How many times do we resume after launching
bool m_wait_for_launch;
+ bool m_continue_once_attached; // Supports the use-case scenario of immediately continuing the process once attached.
};
class ProcessLaunchCommandOptions : public Options
bool success = false;
switch (short_option)
{
+ case 'c':
+ attach_info.SetContinueOnceAttached(true);
+ break;
+
case 'p':
{
lldb::pid_t pid = Args::StringToUInt32 (option_arg, LLDB_INVALID_PROCESS_ID, 0, &success);
result.AppendWarningWithFormat("Architecture changed from %s to %s.\n",
old_arch_spec.GetArchitectureName(), target->GetArchitecture().GetArchitectureName());
}
+
+ // This supports the use-case scenario of immediately continuing the process once attached.
+ if (m_options.attach_info.GetContinueOnceAttached())
+ m_interpreter.HandleCommand("process continue", false, result);
}
return result.Succeeded();
}
OptionDefinition
CommandObjectProcessAttach::CommandOptions::g_option_table[] =
{
-{ LLDB_OPT_SET_ALL, false, "plugin", 'P', required_argument, NULL, 0, eArgTypePlugin, "Name of the process plugin you want to use."},
-{ LLDB_OPT_SET_1, false, "pid", 'p', required_argument, NULL, 0, eArgTypePid, "The process ID of an existing process to attach to."},
-{ LLDB_OPT_SET_2, false, "name", 'n', required_argument, NULL, 0, eArgTypeProcessName, "The name of the process to attach to."},
-{ LLDB_OPT_SET_2, false, "waitfor",'w', no_argument, NULL, 0, eArgTypeNone, "Wait for the the process with <process-name> to launch."},
+{ LLDB_OPT_SET_ALL, false, "continue",'c', no_argument, NULL, 0, eArgTypeNone, "Immediately continue the process once attached."},
+{ LLDB_OPT_SET_ALL, false, "plugin", 'P', required_argument, NULL, 0, eArgTypePlugin, "Name of the process plugin you want to use."},
+{ LLDB_OPT_SET_1, false, "pid", 'p', required_argument, NULL, 0, eArgTypePid, "The process ID of an existing process to attach to."},
+{ LLDB_OPT_SET_2, false, "name", 'n', required_argument, NULL, 0, eArgTypeProcessName, "The name of the process to attach to."},
+{ LLDB_OPT_SET_2, false, "waitfor", 'w', no_argument, NULL, 0, eArgTypeNone, "Wait for the the process with <process-name> to launch."},
{ 0, false, NULL, 0, 0, NULL, 0, eArgTypeNone, NULL }
};