[lldb-dev] Getting valid frames and odd plugin selection behaviour
arvid.picciani at nokia.com
arvid.picciani at nokia.com
Mon Oct 4 08:45:01 PDT 2010
I'm trying to print a backtrace after a process stopped.
unfortunately i cant seen to use the frames at all, despite they're valid:
for(int i=0;i<m_process->GetNumThreads();i++) {
lldb::SBThread t = m_process->GetThreadAtIndex(i);
lldb::SBFrame fr = t.GetFrameAtIndex(0);
fr.IsValid() --> true
fr.GetFunction().isValid() --> false
fr.GetBlock().isValid() --> false
fr.GetCompileUnit().isValid() --> false
while attempting to print the highest frame t.GetFrameAtIndex(t.GetNumFrames()-1)
i got a bunch of crashes. one trace of the crash revealed that its trying to read memory through
the gdb remote process plugin, despite the process was started by the macos process plugin
In source/Target/Process.cpp Process::FindPlugin :
the exact conditions there are unclear to me, all i know is that they are inconsistent across the
debuggers lifetime, meaning it randomly picks an available plugin.
Also, if CanDebug returns false, it looks like the plugin instance is leaked?
After forcing the plugin to "process.macosx", I still get the same unusable frames though.
Should i use a different method there? Unfortunately the API does not match the internal command usage,
so i can only guess how this is meant to be used.
More information about the lldb-dev
mailing list