如何从 lldb 正确调用 python 函数
How to correctly call python function from 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)" command is here!
(lldb) fprint 'tmp.txt' 'Hello World!'
TypeError: fprint() takes exactly 2 arguments (4 given)
(lldb)
所以,我做错了什么?
您所做的不仅仅是调用 Python 函数,您正在定义一个 Python 支持的 lldb 命令行命令。这还有一些要求,特别是实现 LLDB 命令的 Python 函数必须具有正确的签名。有关详细信息,请参阅 Create a new lldb command using a Python function in the LLDB docs 部分。
请注意,如果您只想使用 lldb 的嵌入式 Python 解释器调用 Python 函数,您可以使用 "script" 命令:
(lldb) script fprint("tmp.txt", "Hello world")
我有这个简单的 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)" command is here!
(lldb) fprint 'tmp.txt' 'Hello World!'
TypeError: fprint() takes exactly 2 arguments (4 given)
(lldb)
所以,我做错了什么?
您所做的不仅仅是调用 Python 函数,您正在定义一个 Python 支持的 lldb 命令行命令。这还有一些要求,特别是实现 LLDB 命令的 Python 函数必须具有正确的签名。有关详细信息,请参阅 Create a new lldb command using a Python function in the LLDB docs 部分。
请注意,如果您只想使用 lldb 的嵌入式 Python 解释器调用 Python 函数,您可以使用 "script" 命令:
(lldb) script fprint("tmp.txt", "Hello world")