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 {
- 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.