如何从lldb正确调用python函数

时间:2016-03-22 09:06:16

标签: python macos lldb

我有这个简单的python脚本:

#~/.lldb/scripts/fprint.py

import lldb

def fprint(filePath, text):
    with open(filePath,'a') as f: f.write(text)

def __lldb_init_module(debugger, internal_dict):
    debugger.HandleCommand('command script add -f fprint.fprint fprint')
    print '"fprint(filePath, text)" command is here!'

我在~/.lldbinit声明。

当试图从lldb调用它时,我得到了这个奇怪的错误:

  

%lldb
  " fprint(filePath,text)"命令在这里!
  (lldb)fprint' tmp.txt' ' Hello World!'
  TypeError:fprint()只需要2个参数(给定4个)
  (lldb)

那么,我做错了什么?

1 个答案:

答案 0 :(得分:0)

您所做的不仅仅是调用Python函数,而是定义了一个Python支持的lldb命令行命令。这有一些要求,特别是,实现LLDB命令的Python函数必须具有正确的签名。参见"使用PYTHON功能创建一个新的LLDB命令"在http://lldb.llvm.org/python-reference.html了解更多详情。

注意,如果您只想使用lldb的嵌入式Python解释器调用Python函数,则可以使用"脚本"命令:

(lldb) script fprint("tmp.txt", "Hello world")