================
Comment at: tools/lldb-mi/MICmdCmdMiscellanous.cpp:87-91
@@ -86,3 +86,7 @@
CMICmnLLDBDebugger::Instance().GetDriver().SetExitApplicationFlag(true);
- const lldb::SBError sbErr = m_rLLDBDebugSessionInfo.GetProcess().Detach();
+ lldb::SBProcess sbProcess = m_rLLDBDebugSessionInfo.GetProcess();
+ if (!sbProcess.IsValid())
+ return MIstatus::success;
+
+ const lldb::SBError sbErr = sbProcess.GetShouldDetach() ?
sbProcess.Detach() : sbProcess.Destroy();
// Do not check for sbErr.Fail() here, m_lldbProcess is likely !IsValid()
----------------
clayborg wrote:
> Remove this and always call sbProcess.Destroy(). We will need to modify the
> internal plug-ins to "do the right thing" when destroy is called.
Please, look at Process::Finalize:
```
823 void
824 Process::Finalize()
825 {
826 switch (GetPrivateState())
827 {
828 case eStateConnected:
829 case eStateAttaching:
830 case eStateLaunching:
831 case eStateStopped:
832 case eStateRunning:
833 case eStateStepping:
834 case eStateCrashed:
835 case eStateSuspended:
836 if (GetShouldDetach())
837 {
838 // FIXME: This will have to be a process setting:
839 bool keep_stopped = false;
840 Detach(keep_stopped);
841 }
842 else
843 Destroy();
844 break;
845
846 case eStateInvalid:
847 case eStateUnloaded:
848 case eStateDetached:
849 case eStateExited:
850 break;
851 }
```
Seems that Destroy() should be called if not GetShouldDetach(). Right?
http://reviews.llvm.org/D8298
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits