EvaluateExpression has trailing error

Hi,

My script is simple enough:

import lldb

def pp(debugger, command, result, internal_dict):
    target = debugger.GetSelectedTarget()
    process = target.GetProcess()
    thread = process.GetSelectedThread()
    frame = thread.GetSelectedFrame()
    res = frame.EvaluateExpression("%s->dump()" % command)
    print >>result, res

def __lldb_init_module(debugger, internal_dict):
    debugger.HandleCommand('command script add -f llvm_pp.pp pp')
    print "Command pp installed"

However, when I execute it:

(lldb) pp Ty
Fn(Void -> Int)*
= <unknown error>

When I use res.GetSummary() in place of res, I get "None" instead of
the error. What is this trailing data anyway, and how do I get rid of
it?

Thanks.

Ram

The type name for "Ty" might have a newline in it. Try this:

   res = frame.EvaluateExpression("%s->dump()" % command)
   print >>result, 'typename = "%s"' % (res.GetType().GetName())
   print >>result, res

See if the double quote is on the next line.

Hm, that doesn't seem to be it.

(lldb) pp R
var ~UnType
typename = ""
(<invalid>) = <unknown error>

That doesn't seem to be right, you had a typename before:

(lldb) pp Ty
Fn(Void -> Int)*
= <unknown error>

Make sure everything is setup and is where you were stopped before and that you use the same "Ty" variable you did before. I have seen function types have newlines in them in the past.