The lldb.{target,process,thread} globals are only set when running the 
interactive script interpreter in the lldb "script" command.  They aren't 
available in other environments like the breakpoint commands, or Python based 
user defined commands, etc.  They are really just for convenience when 
prototyping scripts.

In some actual Python code you should have some clear way, depending on the 
environment, what target you mean.  For instance, if you are writing a Python 
based lldb command, you might want to operate on the currently selected target 
(which you can look up in the debugger passed in to you) or you might want to 
look up a target by name, etc.  In a breakpoint command the relevant target 
will be the one which owns the process that owns the frame that actually hit 
the breakpoint, etc...

Jim

> On Aug 12, 2014, at 3:15 PM, Ted Woodward <[email protected]> wrote:
> 
> I’m trying to write a python script that will launch a simulator to run the 
> current target. In my script, I’ve got this code:
>     foo = lldb.target.GetExecutable().__get_fullpath__()
>     print foo
>     print type(foo)
>  
> When I run it, I get this:
> None
> <type 'NoneType'>
>  
> But if I run the same commands interactively, I get the right values:
> (lldb) script foo = lldb.target.GetExecutable().__get_fullpath__()
> (lldb) script print foo
> /usr2/ted/lldb_test/factorial
> (lldb) script print type(foo)
> <type 'str'>
>  
> After calling lldb.target.GetExecutable().__get_fullpath__() interactively, 
> my script starts to work.
>  
> Why doesn’t it work in the script if I don’t call it interactively? How can I 
> get it to work?
>  
> Thanks,
>  
> Ted
> _______________________________________________
> 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