2012-03-11 33 views
15

調試/跟蹤vim插件的最佳方法是什麼?假設我有一個非常複雜的插件Foo,它在按下按鍵F9時會打開帶有文件瀏覽器的新窗口,並提供選擇文件的可能性,然後將文件名複製到主窗口中。我希望看到當我按下某個呼叫跟蹤按鍵時,所調用的按鍵,即F9使用通話跟蹤調試Vim插件

回答

13

我發現的最好方法是在啓動(g)vim時使用-V標誌。您可以指定跟蹤N爲寫日誌級別和文件名:

$ vim -V[N]{filename} 

然後跟蹤信息將被給予所採購的每一個文件。 (有關更多信息,請參見:help -V)。

通過生成的日誌文件進行拖網可能很痛苦,但它通常非常有用。我發現最好在觸發事件之前和之後查看日誌文件(按您的案例中的<F9>)以獲取發生何時的圖片。

5

如果您已經打開vim,請嘗試在VIM的內置調試器下手動執行該命令。

1)找出當你按下鍵

:map <F-9> 

2 VIM做什麼)下調試

:debug _mapped_command_ 

3)現在你應該可以下降到手動運行將映射的命令調試器,所以

set verbose=20 

4)最後按n和回車鍵繼續[R統一腳本

此時您應該在屏幕上看到一大堆輸出。您可以按Space鍵滾動屏幕,j/k按行移動。

任何以「Line#:」開頭的輸出都是vim正在執行的行。

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) 

看到一些插件加載dinamically所以你需要與他們之前設置斷點進行操作。

一旦加載就可以從連接VIM設置斷點有:

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

我有修復/ TWEAK /進化了很多VIM插件感謝這個偉大的插件。