2017-05-15 15 views
0

GdbでPython APIを使用して新しいパラメータを完全に定義する方法がわかりません。私は、ソースには、以下を含むスクリプト:Gdb Python APIで新しいパラメータを作成

python 
param = gdb.Parameter("test", gdb.COMMAND_NONE, gdb.PARAM_OPTIONAL_FILENAME) 
param.set_doc = "This is the documentation" --> throws exception 
end 

私はGdbの中にその値を変更し、ショーは使用して:

(gdb) set test "hello world" 
This command is not documented. 
(gdb) show test 
This command is not documented. "hello world" 

をGDBのドキュメントはParameter.set_docに言及し、私はそれに割り当てようとするとき、私は取得します例外:

AttributeError: 'gdb.Parameter' object has no attribute 'set_doc' 

この文書を追加するにはどうすればよいですか、またはこの「文書化されていません」というメッセージが表示されないようにするにはどうすればよいですか?

答えて

1

gdb.Parameterを直接インスタンス化して後で属性を追加することで、新しいパラメータを作成することは可能ですが、誰かが答えられるかもしれません。通常、新しいクラスを定義し、サブクラスgdb.Parameterを定義し、そのクラス内のset_docなどのクラスを作成し、そのクラスをインスタンス化します。

$ cat test.py 
class TestParameter(gdb.Parameter): 
    """Manage the test parameter. 

    Usage: set test filename 
      show test 
    """ 
    set_doc = "This is the single-line documentation for set test" 
    show_doc = "This is the single-line documentation for show test" 
    def __init__(self): 
     super(TestParameter, self).__init__("test", gdb.COMMAND_NONE, 
              gdb.PARAM_OPTIONAL_FILENAME) 
     self.value="" 
    def get_set_string(self): 
     return "You have set test to " + self.value 
    def get_show_string(self, _): 
     return "The value of test is " + self.value 

TestParameter() 

$ gdb -q 
(gdb) source test.py 

次のショーとどのように様々なドキュメントの文字列が表示されます:

(gdb) set test .profile 
You have set test to .profile 
(gdb) show test 
The value of test is .profile 
+0

グレート例:ここでは

(gdb) help set test This is the single-line documentation for set test Manage the test parameter. Usage: set test filename show test (gdb) help show test This is the single-line documentation for show test Manage the test parameter. Usage: set test filename show test (gdb) help set ... List of set subcommands: ... set test -- This is the single-line documentation for set test ... 

setshowによって生成される出力です。ここ作り直しあなたの例では、です+1!どうも。 'set'コマンドを静かにすることもできますか?私は 'set'コマンドをgdb関数で使用しています。これは、私が見たくないドキュメント文字列を出力します。 – gospes

+0

私は出力を生成する際にユーザ定義のパラメータの 'set'を停止する方法を見いだせませんでした。 'get_set_string'を' '" 'にすると、gdbは空行を出力します。 'get_set_string'を定義しないと、gdbは' set_doc'の値を出力します。 'get_set_string'を定義せず' set_doc'を定義しないと、gdbは ''このコマンドは出力されません。 –

関連する問題