Hi all,

I'm trying to debug lldb to see where the active thread gets unselected,
using my patch for the "frame return" command.

But I'm having some problems. Most of the time, I can't evaluate C++
expressions, like "m_threads[idx]" (missing symbol: …), or
"process->GetSelectedThread()" (call is ambiguous, but no candidates are
given).
Since I was having these errors, I tried checking out if I could find those
candidates while clang parsed the AST.

Right now, I'm running a test program in lldb in lldb in lldb… It's not that
fun :-)

I will stop the bottom debugger in CommandObjectThread.cpp:413 and, in the
middle lldb, run the command:
    frame #0: 0x000000010031d875
LLDB`CommandObjectThreadStepWithTypeAndScope::Execute(lldb_private::Args&,
lldb_private::CommandReturnObject&) + 197 at CommandObjectThread.cpp:413
   410          else
   411          {
   412              const uint32_t num_threads =
process->GetThreadList().GetSize();
-> 413              Thread *thread = NULL;
   414
   415              if (command.GetArgumentCount() == 0)
   416              {
1) expr process->GetThreadList()


This command, normally, will error out with:
error: call to member function 'GetThreadList' is ambiguous
note: candidate function
note: candidate function
error: 1 errors parsing expression

Not listing the candidate functions (as it should?). If I stop that lldb, I
can't check the Diagnostic object (with the outermost lldb):
    frame #0: 0x000000010042b182
LLDB`clang::CompilerInstance::getDiagnostics() const + 114 at
CompilerInstance.h:254
   251    /// Get the current diagnostics engine.
   252    Diagnostic &getDiagnostics() const {
   253      assert(Diagnostics && "Compiler instance has no diagnostics!");
-> 254      return *Diagnostics;
   255    }
   256
   257    /// setDiagnostics - Replace the current diagnostics engine.
0) expr *(Diagnostics.Obj)
Assertion failed: (D && "Cannot get layout of forward declarations!"),
function getASTRecordLayout, file RecordLayoutBuilder.cpp, line 1835.
[1]    73430 illegal hardware instruction  lldb

This triggers an assert and shuts down clang. I have built lldb with the
debug version of llvm+clang, as it says on the docs/ folder.

Shouldn't clang+lldb be able to get that information? Any clues on where the
bug might lie? (clang? lldb?)

Regards,nbsp; Filipe Cabecinhas

P.S: XCode blows up, too, which shouldn't happen.
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to