Hi. Being forced to move from gdb to lldb thanks to XCode 5 dropping support for gdb, I find myself having to re-implement several commands I had up and running within gdb.
I use the Qt framework, and in gdb, I had various macros to print the content of Qt objects such as QString, QMap, QList etc... I tried to follow the tutorials found there: http://lldb.llvm.org/tutorial.html and scripting: http://lldb.llvm.org/scripting.html In the python reference documentation: http://lldb.llvm.org/python-reference.html there's a link to a template example: http://llvm.org/svn/llvm-project/lldb/trunk/examples/python/cmdtemplate.py which according to the documentation should be invoked from lldb with: command script import /path/to/cmdtemplate.py When doing so, the module gets properly imported and you see in the lldb console: The "framestats" command has been installed, type "help framestats" or "framestats --help" for detailed help. However trying to use the command (lldb) framestats --help yield: error: unable to execute script function I'm just putting this as an example... I've been unable to load *any* python script within lldb: (lldb) version lldb-300.2.47 it always yield the same error "unable to execute script function".. I tried setting the PYTHONPATH variable to: /Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Versions/A/Resources/Python which is where it's located, to no available... So I'm looking at some pointers on how to use python scripts within lldb. Ultimately, what I'm trying to achieve is printing the content of a QString. A QString object has a private member QString::Data* d; where d->size contains the number of UTF-16 characters and d->data is an array of ushort (the UTF-16) characters. In gdb I would "simply" have: define printqstringdata set $d = ('QString::Data'*) $arg0 set $i = 0 # abort after a '-1' character, to avoid going on forever when printing a garbage string while $i < $d->size && ($i == 0 || (char)$d->data[$i-1] != -1) printf "%c", (char)($d->data[$i++] & 0xff) end printf "\n" end to print the content of the QString, I would call printqstringdata variable.d doing such loop would be easy in python; provided I managed to get the script to load and provide and retrieve the QString variable argument. Any pointers or link to some tutorials will be welcome... Googling lldb python scripting hasn't provided much help at this stage unfortunately... It seems no one has bothered writing much python scripts for lldb yet.... probably too new or not popular enough. Kind regards Jean-Yves _______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
