Sean Callanan has a patch that is coming that improves C++ expressions. We know 
of this issue and are currently working to resolve it. The fix should be 
landing in the next day or so.

Greg Clayton

On Jul 28, 2011, at 6:47 PM, Filipe Cabecinhas wrote:

> 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


_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to