2016-03-22 3 views
0

ich diesen einfachen Python-Skript habe:Wie richtig Python Funktion von LLDB rufen

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

Was ich in ~/.lldbinit erklären.

Beim Versuch, es zu nennen von lldb ich dieses seltsame Fehlermeldung erhalten:

% lldb
"fprint(filePath, text)" command is here!
(lldb) fprint 'tmp.txt' 'Hello World!'
TypeError: fprint() takes exactly 2 arguments (4 given)
(lldb)

Also, was mache ich falsch?

Antwort

0

Sie tun mehr, als nur eine Python-Funktion aufzurufen, Sie definieren einen von Python unterstützten lldb-Befehlszeilenbefehl. Das hat einige weitere Anforderungen, insbesondere muss die Python-Funktion, die den LLDB-Befehl implementiert, die richtige Signatur haben. Weitere Informationen finden Sie im Abschnitt "ERSTELLEN EINER NEUEN LLDB-KOMMANDO MIT PYTHON-FUNKTION" unter http://lldb.llvm.org/python-reference.html.

Hinweis, wenn Sie nur eine Python-Funktion LLDB eingebetteten Python-Interpreter aufrufen möchten, können Sie tun, dass mit dem „Script“ Befehl:

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