clayborg requested changes to this revision.
clayborg added a comment.
This revision now requires changes to proceed.

So I am not sure I like the caching that we are doing in 
TracePluginCommandDelegate in the CommandObjectTraceStart class. See inline 
comments, but it might be better to cache the command object SP in 
lldb_private::Process and add accessors.



================
Comment at: lldb/source/Commands/CommandObjectThread.cpp:2013
+
+    if (process != m_delegate.process) {
+      m_delegate = {process, /*command*/ nullptr, /*error*/ ""};
----------------
See my comment below about TracePluginCommandDelegate.process being a pointer. 
If we switch to using a weak pointer, then this should need to be:

```
if (m_delegate.process_wp.expired() || process != 
m_delegate.process_wp.lock().get())
```


================
Comment at: lldb/source/Commands/CommandObjectThread.cpp:2014
+    if (process != m_delegate.process) {
+      m_delegate = {process, /*command*/ nullptr, /*error*/ ""};
+
----------------
if we use weak pointer:
```
m_delegate = {process->shared_from_this(), /*command*/ nullptr, /*error*/ ""};
```


================
Comment at: lldb/source/Commands/CommandObjectThread.cpp:2034
+  struct TracePluginCommandDelegate {
+    Process *process;
+    CommandObjectSP command;
----------------
ProcessWP would be safer here. Theoretically a Process instance could be freed 
and a new process could be allocated at the same address. So maybe:
```
  ProcessWP process_wp;
```

The other option, which I think I prefer, would be to cache this in the 
lldb_private::Process class instead of in a cache in CommandObjectTraceStart


================
Comment at: lldb/source/Commands/CommandObjectThreadUtil.cpp:1-2
+//===-- CommandObjectThreadUtil.cpp
+//-------------------------------------------===//
+//
----------------
Fix comment header to be on one line. This must be an auto lint thing?


================
Comment at: lldb/source/Commands/CommandObjectThreadUtil.h:1-2
+//===-- CommandObjectThreadUtil.h -----------------------------------*- C++
+//-*-===//
+//
----------------
fix comment header to be on one line


================
Comment at: lldb/test/API/commands/trace/TestTraceStartStop.py:24
+        self.expect("thread trace start", error=True,
+            substrs=["error: tracing is not supported for the current process. 
Not implemented"])
+
----------------
Shouldn't we get a better error message here? Something like "error: can't 
start tracing on a loaded trace file"? Might be nice to be able to somehow 
detect that a process or thread comes from a core file. We would need to ask 
the process something like "process->IsLiveDebugSession()" and return a correct 
error if it isn't. If it is a live debug session, then the ""error: tracing is 
not supported for the current process. Not implemented" is better. 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D90729/new/

https://reviews.llvm.org/D90729

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to