On 14/12/2018 19:52, Zachary Turner wrote:
I don't know if there's a good way to do that.  Because debuggers need to be able to see across multiple translation units, this is implemented internally as constructing one giant AST that contains everything for the entire program.  LLDB has no notion of a per-module AST, so it would be hard to make this work.


That's not how it's implemented now. The code actually iterates through all the modules and dumps each one in turn.

      result.GetOutputStream().Printf("Dumping clang ast for %" PRIu64
                                      " modules.\n",
                                      (uint64_t)num_modules);
      for (size_t image_idx = 0; image_idx < num_modules; ++image_idx) {
        if (m_interpreter.WasInterrupted())
          break;
        Module *m = target->GetImages().GetModulePointerAtIndex(image_idx);
        SymbolFile *sf = m->GetSymbolVendor()->GetSymbolFile();
        sf->DumpClangAST(result.GetOutputStream());
      }


In fact, it looks like this command already supports specifying the exact module to dump (either by basename or full path).
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to