19 CommandObjectIterateOverThreads::CommandObjectIterateOverThreads(
41 bool all_threads =
false;
55 std::vector<lldb::tid_t> tids;
60 for (ThreadSP thread_sp : process->
Threads())
61 tids.push_back(thread_sp->GetID());
66 std::lock_guard<std::recursive_mutex> guard(
69 for (
size_t i = 0; i < num_args; i++) {
86 tids.push_back(thread->GetID());
92 std::set<UniqueStack> unique_stacks;
104 const std::vector<uint32_t> &thread_index_ids =
105 stack.GetUniqueThreadIndexIDs();
106 strm.
Format(
"{0} thread(s) ", thread_index_ids.size());
107 for (
const uint32_t &thread_index_id : thread_index_ids) {
108 strm.
Format(
"#{0} ", thread_index_id);
113 uint32_t representative_thread_id = stack.GetRepresentativeThread();
115 representative_thread_id);
136 lldb::tid_t tid, std::set<UniqueStack> &unique_stacks,
141 if (thread ==
nullptr) {
147 std::stack<lldb::addr_t> stack_frames;
149 for (
uint32_t frame_index = 0; frame_index < frame_count; frame_index++) {
150 const lldb::StackFrameSP frame_sp =
153 stack_frames.push(
pc);
157 UniqueStack new_unique_stack(stack_frames, thread_index_id);
160 std::set<UniqueStack>::iterator matching_stack =
161 unique_stacks.find(new_unique_stack);
162 if (matching_stack != unique_stacks.end()) {
163 matching_stack->AddThread(thread_index_id);
165 unique_stacks.insert(new_unique_stack);
174 std::vector<lldb::tid_t> tids;
177 std::lock_guard<std::recursive_mutex> guard(
181 for (ThreadSP thread_sp : process.
Threads())
182 tids.push_back(thread_sp->GetID());
186 tids.push_back(thread.
GetID());
189 for (
size_t i = 0; i < num_args; i++) {
205 tids.push_back(thread->GetID());