ravitheja added a comment.
Just to make things clear, I will explain a use case
Suppose if we are debugging an application where the main thread spawns a
second new thread ->
int main() {
int i = 0; // user starts tracing on main thread -> gets traceid 1
..... // Some statements
i++; // Here he starts tracing the whole process -> gets traceid 2.
// Now traceid=2 represents the tracing instance on the
// whole process, meaning all new threads spawned in
// the process will be traced with this id. Although the
//main thread is already being traced hence
// will not be a part of traceid =2
std::thread (thread_function) // New thread spawned, this will be traced with
id =2
..... // Some statements
// To obtain the trace data or stop the trace on main thread
// the user can simply work with trace id =1 and not specify the
// thread id anywhere.
// For threads under the process trace id hood, the thread id needs
to be specified for
// obtaining the trace data or if the tracing needs to be stopped
only for that thread.
// Now if the tracing on the process is switched off then the tracing
on the main thread
// is not affected.
}
Now the set of threads
m_pt_traced_thread_group
will track threads that are being traced under the process trace id. Hence when
a thread exits,
we need to update this set accordingly.
================
Comment at: source/Plugins/Process/Linux/NativeProcessLinux.cpp:2644
+ if (iter != m_processor_trace_monitor.end())
+ error = StopTrace(iter->second->GetTraceID(), thread);
+
----------------
labath wrote:
> Should you delete the iterator from the map after this? In fact, the mere act
> of deleting the iterator should probably be what triggers the trace stop, in
> line with RAII principles.
Yes, but the thing is i have to update the Set of threads
```m_pt_traced_thread_group
```
which is tracking how many threads are being traced under the process trace id.
The StopTrace calls StopProcessorTracingOnThread eventually which deletes the
element from the various containers. I can directly call
StopProcessorTracingOnThread instead of StopTrace.
https://reviews.llvm.org/D33674
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits