summaryrefslogtreecommitdiffstats
path: root/lldb/source/Commands/CommandObjectProcess.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Commands/CommandObjectProcess.cpp')
-rw-r--r--lldb/source/Commands/CommandObjectProcess.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/lldb/source/Commands/CommandObjectProcess.cpp b/lldb/source/Commands/CommandObjectProcess.cpp
index 5239b7bf2d6..42bc4af3bb2 100644
--- a/lldb/source/Commands/CommandObjectProcess.cpp
+++ b/lldb/source/Commands/CommandObjectProcess.cpp
@@ -536,7 +536,8 @@ public:
CommandReturnObject &result)
{
Target *target = m_interpreter.GetDebugger().GetSelectedTarget().get();
-
+ bool synchronous_execution = m_interpreter.GetSynchronous ();
+
Process *process = m_interpreter.GetDebugger().GetExecutionContext().process;
if (process)
{
@@ -636,6 +637,24 @@ public:
result.SetStatus (eReturnStatusFailed);
return false;
}
+ // If we're synchronous, wait for the stopped event and report that.
+ // Otherwise just return.
+ // FIXME: in the async case it will now be possible to get to the command
+ // interpreter with a state eStateAttaching. Make sure we handle that correctly.
+ if (synchronous_execution)
+ {
+ StateType state = process->WaitForProcessToStop (NULL);
+
+ result.SetDidChangeProcessState (true);
+ result.AppendMessageWithFormat ("Process %i %s\n", process->GetID(), StateAsCString (state));
+ result.SetStatus (eReturnStatusSuccessFinishNoResult);
+ }
+ else
+ {
+ result.SetDidChangeProcessState (true);
+ result.AppendMessageWithFormat ("Starting to attach to process.");
+ result.SetStatus (eReturnStatusSuccessFinishNoResult);
+ }
}
else
{
@@ -681,6 +700,21 @@ public:
error.AsCString());
result.SetStatus (eReturnStatusFailed);
}
+ // See comment for synchronous_execution above.
+ if (synchronous_execution)
+ {
+ StateType state = process->WaitForProcessToStop (NULL);
+
+ result.SetDidChangeProcessState (true);
+ result.AppendMessageWithFormat ("Process %i %s\n", process->GetID(), StateAsCString (state));
+ result.SetStatus (eReturnStatusSuccessFinishNoResult);
+ }
+ else
+ {
+ result.SetDidChangeProcessState (true);
+ result.AppendMessageWithFormat ("Starting to attach to process.");
+ result.SetStatus (eReturnStatusSuccessFinishNoResult);
+ }
}
else
{
OpenPOWER on IntegriCloud