wallace marked 6 inline comments as done.
wallace added inline comments.

================
Comment at: lldb/source/Target/Trace.cpp:173
+  // instruction's disassembler when possible.
+  auto calculate_disass = [&](const Address &address, const SymbolContext &sc) 
{
+    if (prev_insn.disassembler) {
----------------
clayborg wrote:
> Can or should we get the disassembler in calculate_symbol_context above after 
> calling address.CalculateSymbolContext(...)? 
i think it's fine as it is, as we don't always need a disassembly. I want to 
use this TraverseInstructionsWithSymbolInfo method for creating the call graph, 
and I don't need the disassembly for that


================
Comment at: lldb/source/Target/Trace.cpp:203
+      thread, position, direction,
+      [&](size_t index, Expected<lldb::addr_t> load_address) -> bool {
+        if (!load_address)
----------------
clayborg wrote:
> Can this function really be called without a valid load address?
yes, whenever there are gaps in the trace


================
Comment at: lldb/source/Target/Trace.cpp:310
                                   size_t end_position, bool raw) {
-  if (!IsTraced(thread)) {
+  Optional<size_t> instructions_count = GetInstructionCount(thread);
+  if (!instructions_count) {
----------------
clayborg wrote:
> Should this return a Expected<size_t>? In case there is an error we want to 
> show? Like maybe the trace buffer was truncated, or missing when it was 
> expected? Can we have a process that is traced, but by the time we fetch the 
> instructions, the circular buffer was filled with other data and even though 
> the thread was traced there is no data?
Any kind of errors are represented as failed instructions, which means that if 
the entire operation failed, there's one single instruction with an error 
message. If the thread is not traced at all, then this method return None. 
There can be errors while getting the data or errors while decoding individual 
instructions. That was a suggestion by Labath and I think this makes the code 
simpler, as there is only one way to handle errors.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D100740

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

Reply via email to