[tools] Add error handling to no_arg_cmd
Currently, it can be little difficult to understand why a command in lldb-commands.py stops working. For example, at the moment running the jlh command results in an empty line: $ lldb --one-line "command script import ../../tools/lldb_commands.py" \ v8_hello_world (lldb) br s -f hello-world.cc -l 49 (lldb) jlh script (lldb) With this commit this would instead display the following error message: (lldb) jlh script Failed to evaluate command _v8_internal_Print_Object(*(v8::internal::Object**)(*(void*)(script))) : error: cannot cast from type 'v8::Local<v8::Script>' to pointer type 'void *' The output is really only two lines but I've wrapped the lines here so they don't exceed the 72 column width. I'll follow up with a commit to fix the issue reported. Change-Id: I634a412b616dad7cadd74dce36418d27c1997777 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2083477 Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#68093}
This commit is contained in:
parent
1f5842ad7a
commit
fcac59ad8a
@ -21,8 +21,17 @@ def current_frame(debugger):
|
||||
return current_thread(debugger).GetSelectedFrame()
|
||||
|
||||
def no_arg_cmd(debugger, cmd):
|
||||
current_frame(debugger).EvaluateExpression(cmd)
|
||||
print("")
|
||||
evaluate_result = current_frame(debugger).EvaluateExpression(cmd)
|
||||
# When a void function is called the return value type is 0x1001 which
|
||||
# is specified in http://tiny.cc/bigskz. This does not indicate
|
||||
# an error so we check for that value below.
|
||||
kNoResult = 0x1001
|
||||
error = evaluate_result.GetError()
|
||||
if error.fail and error.value != kNoResult:
|
||||
print("Failed to evaluate command {} :".format(cmd))
|
||||
print(error.description)
|
||||
else:
|
||||
print("")
|
||||
|
||||
def ptr_arg_cmd(debugger, name, param, cmd):
|
||||
if not param:
|
||||
@ -41,7 +50,7 @@ def job(debugger, param, *args):
|
||||
def jlh(debugger, param, *args):
|
||||
"""Print v8::Local handle value"""
|
||||
ptr_arg_cmd(debugger, 'jlh', param,
|
||||
"_v8_internal_Print_Object(*(v8::internal::Object**)(*{}))")
|
||||
"_v8_internal_Print_Object(*(v8::internal::Object**)({}.val_))")
|
||||
|
||||
def jco(debugger, param, *args):
|
||||
"""Print the code object at the given pc (default: current pc)"""
|
||||
|
Loading…
Reference in New Issue
Block a user