diff options
| author | Jim Ingham <jingham@apple.com> | 2012-05-08 23:06:07 +0000 |
|---|---|---|
| committer | Jim Ingham <jingham@apple.com> | 2012-05-08 23:06:07 +0000 |
| commit | 8499e1a4cb1b8d3c1229f51e0d604f03c0285037 (patch) | |
| tree | da9507b0b85898aaae3bd4e0cf330eb4dc317899 | |
| parent | 3d6311d5f7e5078df992c5167b53a586cfb7213a (diff) | |
| download | bcm5719-llvm-8499e1a4cb1b8d3c1229f51e0d604f03c0285037.tar.gz bcm5719-llvm-8499e1a4cb1b8d3c1229f51e0d604f03c0285037.zip | |
Print out a notification when the process of a target other than the currently selected target stops.
llvm-svn: 156433
| -rw-r--r-- | lldb/include/lldb/API/SBDebugger.h | 3 | ||||
| -rw-r--r-- | lldb/include/lldb/Target/TargetList.h | 3 | ||||
| -rw-r--r-- | lldb/scripts/Python/interface/SBDebugger.i | 3 | ||||
| -rw-r--r-- | lldb/source/API/SBDebugger.cpp | 14 | ||||
| -rw-r--r-- | lldb/source/Target/TargetList.cpp | 13 | ||||
| -rw-r--r-- | lldb/tools/driver/Driver.cpp | 25 |
6 files changed, 56 insertions, 5 deletions
diff --git a/lldb/include/lldb/API/SBDebugger.h b/lldb/include/lldb/API/SBDebugger.h index 0ec84f7de7f..a07c764bc94 100644 --- a/lldb/include/lldb/API/SBDebugger.h +++ b/lldb/include/lldb/API/SBDebugger.h @@ -127,6 +127,9 @@ public: lldb::SBTarget GetTargetAtIndex (uint32_t idx); + + uint32_t + GetIndexOfTarget (lldb::SBTarget target); lldb::SBTarget FindTargetWithProcessID (pid_t pid); diff --git a/lldb/include/lldb/Target/TargetList.h b/lldb/include/lldb/Target/TargetList.h index 27663a5731d..2e5663aba57 100644 --- a/lldb/include/lldb/Target/TargetList.h +++ b/lldb/include/lldb/Target/TargetList.h @@ -142,6 +142,9 @@ public: lldb::TargetSP GetTargetAtIndex (uint32_t index) const; + + uint32_t + GetIndexOfTarget (lldb::TargetSP target_sp) const; //------------------------------------------------------------------ /// Find the target that contains has an executable whose path diff --git a/lldb/scripts/Python/interface/SBDebugger.i b/lldb/scripts/Python/interface/SBDebugger.i index 465c856f393..2fabc452fb9 100644 --- a/lldb/scripts/Python/interface/SBDebugger.i +++ b/lldb/scripts/Python/interface/SBDebugger.i @@ -209,6 +209,9 @@ public: lldb::SBTarget GetTargetAtIndex (uint32_t idx); + uint32_t + GetIndexOfTarget (lldb::SBTarget target); + lldb::SBTarget FindTargetWithProcessID (pid_t pid); diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp index be5190d8932..ce85544dce4 100644 --- a/lldb/source/API/SBDebugger.cpp +++ b/lldb/source/API/SBDebugger.cpp @@ -678,6 +678,20 @@ SBDebugger::GetTargetAtIndex (uint32_t idx) return sb_target; } +uint32_t +SBDebugger::GetIndexOfTarget (lldb::SBTarget target) +{ + + lldb::TargetSP target_sp = target.GetSP(); + if (!target_sp) + return UINT32_MAX; + + if (!m_opaque_sp) + return UINT32_MAX; + + return m_opaque_sp->GetTargetList().GetIndexOfTarget (target.GetSP()); +} + SBTarget SBDebugger::FindTargetWithProcessID (pid_t pid) { diff --git a/lldb/source/Target/TargetList.cpp b/lldb/source/Target/TargetList.cpp index 3ec4b08c190..3aaa77925e2 100644 --- a/lldb/source/Target/TargetList.cpp +++ b/lldb/source/Target/TargetList.cpp @@ -421,6 +421,19 @@ TargetList::GetTargetAtIndex (uint32_t idx) const } uint32_t +TargetList::GetIndexOfTarget (lldb::TargetSP target_sp) const +{ + Mutex::Locker locker (m_target_list_mutex); + size_t num_targets = m_target_list.size(); + for (size_t idx = 0; idx < num_targets; idx++) + { + if (target_sp == m_target_list[idx]) + return idx; + } + return UINT32_MAX; +} + +uint32_t TargetList::SetSelectedTarget (Target* target) { Mutex::Locker locker (m_target_list_mutex); diff --git a/lldb/tools/driver/Driver.cpp b/lldb/tools/driver/Driver.cpp index b022f38b710..3c4deb93317 100644 --- a/lldb/tools/driver/Driver.cpp +++ b/lldb/tools/driver/Driver.cpp @@ -945,11 +945,26 @@ Driver::HandleProcessEvent (const SBEvent &event) } else { - SBCommandReturnObject result; - UpdateSelectedThread (); - m_debugger.GetCommandInterpreter().HandleCommand("process status", result, false); - m_io_channel_ap->ErrWrite (result.GetError(), result.GetErrorSize(), ASYNC); - m_io_channel_ap->OutWrite (result.GetOutput(), result.GetOutputSize(), ASYNC); + if (GetDebugger().GetSelectedTarget() == process.GetTarget()) + { + SBCommandReturnObject result; + UpdateSelectedThread (); + m_debugger.GetCommandInterpreter().HandleCommand("process status", result, false); + m_io_channel_ap->ErrWrite (result.GetError(), result.GetErrorSize(), ASYNC); + m_io_channel_ap->OutWrite (result.GetOutput(), result.GetOutputSize(), ASYNC); + } + else + { + SBStream out_stream; + uint32_t target_idx = GetDebugger().GetIndexOfTarget(process.GetTarget()); + if (target_idx != UINT32_MAX) + out_stream.Printf ("Target %d: (", target_idx); + else + out_stream.Printf ("Target <unknown index>: ("); + process.GetTarget().GetDescription (out_stream, eDescriptionLevelBrief); + out_stream.Printf (") stopped.\n"); + m_io_channel_ap->OutWrite (out_stream.GetData(), out_stream.GetSize(), ASYNC); + } } break; } |

