2016-03-22 2 views
0

У меня есть этот простой питон скрипт:Как правильно вызвать функцию питона из lldb

#~/.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)

Итак, что я делаю неправильно?

ответ

0

Вы делаете больше, чем просто вызов функции Python, вы определяете команду командной строки lldb под управлением Python. Это требует еще нескольких требований, в частности, функция Python, реализующая команду LLDB, должна иметь правильную подпись. См. Раздел «СОЗДАТЬ НОВУЮ КОМАНДУ LLDB ИСПОЛЬЗОВАНИЕ ФУНКЦИИ ПИТОНА» в http://lldb.llvm.org/python-reference.html для более подробной информации.

Обратите внимание, если вы просто хотите вызвать функцию Python, используя встроенный интерпретатор Python lldb, вы можете сделать это с помощью команды «сценария»:

(lldb) script fprint("tmp.txt", "Hello world") 
Смежные вопросы