19

vimプラグインをデバッグ/トレースするための望ましい一般的な方法は何ですか? かなり洗練されたプラグイン Foo を持っているとします。キーを押すF9と、ファイル ブラウザで新しいウィンドウが開き、ファイルを選択できるようになります。その後、ファイル名がメイン ウィンドウにコピーされます。F9キーを押したときに何が呼び出されるか、ある種の呼び出しトレースを確認したいと思います。

4

3 に答える 3

18

私が見つけた最良の方法は、-V(g)vim を起動するときにフラグを使用することです。書き込まれるログのトレースのレベルNとファイル名を指定できます。

$ vim -V[N]{filename}

次に、ソースされた各ファイルに対してトレース メッセージが表示されます。(詳細については、を参照:help -Vしてください。)

生成されたログファイルをトロールするのは骨が折れる場合がありますが、通常はかなり有益です。<F9>トリガーイベントの前後(あなたの場合は押す)の前後にログファイルを表示して、いつ発生しているのかを把握するのが最善だと思います。

于 2012-03-12T14:09:00.343 に答える
7

すでに vim を開いている場合は、VIM の組み込みデバッガーでコマンドを手動で実行してみてください。

1)キーを押したときにvimが何をするかを調べます

:map <F-9>

2) マッピングされたコマンドをデバッガーで手動で実行します

:debug _mapped_command_

3) 今、デバッガーにドロップインする必要があるので、

set verbose=20

4) 最後nに Enter キーを押して、スクリプトの実行を続行します。

この時点で、画面に大量の出力が表示されるはずです。Space を押して画面をスクロールし、j/k を押して行ごとに移動できます。

「Line #:」で始まる出力は、その時点で vim が実行されている行です。

于 2015-04-11T03:26:00.113 に答える
1

洗練されたプラグインの場合、通常、コマンド ラインのデバッグやトレースでは不十分です。

BreakPtsを使用して、vim 内で視覚的なデバッグを行うことができます。

これはリモート デバッグに基づいているため、vim のサーバー インスタンスをデバッグする必要があります。

基本的:

ターミナル1:

$ vim --servername Foo
...
set breakpoint on any Foo function
do whatever operation which trigger Foo logic
...

ターミナル2:

$ vim
:BreakPts
:BPRemoteServ FOO
:BPDWhere locate (actual debug execution point)
:BPDNext or F12 (next execution line)
:BPDStep or F11 (step inside functions, dictionary functions)
:BPDEvaluate or F8 (if pressed on visual selection evaluates that)
:BPDCont or F5 (continue execution)

一部のプラグインは動的にロードされるため、ブレークポイントを設定する前に操作する必要があります。

ロードしたら、接続された vim から次のようにブレークポイントを設定できます。

:BPFunctions (Show debuggeable fuctions on RemoteServer)
:BPScripts (Show debuggeable scripts on RemoteServer)
:BPPoints (Show defined breakpoints on RemoteServer)

この素晴らしいプラグインのおかげで、多くの vim プラグインを修正/調整/進化させました。

于 2015-07-05T21:46:22.900 に答える