Python API: Evaluating commands with specified language

Hi!

I've been trying to get https://github.com/facebook/chisel to work on Swift targets, and so far noticed one issue: while I'm stopped inside Swift code, all SBFrame.EvaluateExpression() calls are evaluated as if they're in Swift, not in Objective-C (this is what Chisel expects).

It's very easy to reproduce the issue using just default prompt:

(lldb) e (id)objc_getClass("NSClipView")
error: <EXPR>:1:5: error: consecutive statements on a line must be separated by ';'
(id)objc_getClass("NSClipView")
    ^
    ;

(lldb) script
Python Interactive Interpreter. To exit, type 'quit()', 'exit()'.

value = lldb.frame.EvaluateExpression('(id)objc_getClass("NSClipView")')
str(value.GetError())

'error: <EXPR>:1:5: error: consecutive statements on a line must be separated by \';\'\n(id)objc_getClass("NSClipView")\n ^\n ;'

(lldb) e -l objective-c++ -- (id)objc_getClass("NSClipView")
(id) $1 = 0x00007fff7c259440

I've looked at LLDB Python API (http://lldb.llvm.org/python_reference/), and was unable to find a way to explicitly specify a language using EvaluateExpression call. Is there a way to do so?

-Michail

Hi Michail,

Try the SBFrame::EvaluteExpression(const char *expr, const SBExpressionOptions &options) method where you've specified the language in the SBExpressionOptions object.

J

Thanks, it works!

And I'm trying to get language based on current frame — it seems that SBCompileUnit.GetLanguage() was added very recently in r222189. Will it be added to the Xcode 6 updates?

P.S. Python API reference (http://lldb.llvm.org/python_reference/) is badly outdated — it says that it was generated back in 2013, and it looks that I have to rely on SB* headers in lldb repository to get up-to-date info.

This change was around June 2014, it is included in Xcode 6 which was released around September 2014. The API won't exist in Xcode 5 installations, but I don't think that's a large number of users.

Yeah we need to figure out how to regenerate the on-line API documentation, I don't know exactly how Dan generated it. It's about a year and a half old at this point.

Yeah, only SBExpressionOptions was improved in June 2014, but SBCompileUnit.GetLanguage() was added very recently in November 2014 (r222189) and my second question was about that, and it's not yet in the latest Xcode 6.1.1.