2012-03-11 29 views
15

Phương pháp gỡ lỗi/truy tìm vim bổ sung, thích hợp hơn là gì? Giả sử tôi có một plugin Foo khá phức tạp, trên phím được nhấn F9 mở cửa sổ mới bằng trình duyệt tệp và cung cấp khả năng chọn tệp, sau đó tên tệp được sao chép vào cửa sổ chính. Tôi muốn xem những gì được gọi khi tôi nhấn phím F9, một số loại dấu vết cuộc gọi.Gỡ lỗi các plugin Vim với các dấu vết cuộc gọi

Trả lời

13

Cách tốt nhất tôi đã tìm thấy là sử dụng cờ -V khi bắt đầu (g) ​​vim. Bạn có thể chỉ định một mức độ truy tìm N và một tên tập tin cho nhật ký viết:

$ vim -V[N]{filename} 

Sau đó theo dõi các thông điệp sẽ được cung cấp cho mỗi tập tin được nguồn gốc. (Xem :help -V để biết thêm thông tin.)

Trawling thông qua logfile kết quả có thể gây đau đớn, nhưng nó thường khá thông tin. Tôi tìm thấy nó tốt nhất để xem logfile trước và sau khi sự kiện kích hoạt (nhấn <F9> trong trường hợp của bạn) để có được một hình ảnh của khi xảy ra.

5

Nếu bạn đã mở ứng dụng, hãy thử thực hiện lệnh theo cách thủ công trong trình gỡ lỗi tích hợp của VIM.

1) Tìm hiểu những gì vim làm khi bạn bấm phím

:map <F-9> 

2) Chạy lệnh ánh xạ bằng tay dưới debugger

:debug _mapped_command_ 

3) Ngay bây giờ bạn nên bỏ vào trình gỡ lỗi, do đó,

set verbose=20 

4) Và cuối cùng nhấn n và Enter để tiếp tục r hợp nhất tập lệnh

Tại thời điểm này, bạn sẽ thấy toàn bộ kết quả đầu ra trên màn hình. Bạn có thể nhấn Space để cuộn màn hình, j/k để di chuyển từng dòng.

Bất kỳ đầu ra nào bắt đầu bằng "Dòng #:" là dòng vim đang thực thi tại thời điểm đó.

1

Đối với các plugin phức tạp, thông thường gỡ lỗi dòng lệnh hoặc truy tìm là không đủ.

Bạn có thể sử dụng BreakPts để thực hiện gỡ lỗi trực quan bên trong vim.

Nó dựa trên gỡ lỗi từ xa, vì vậy bạn cần gỡ lỗi phiên bản máy chủ vim.

Về cơ bản:

Terminal 1:

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

Nhà ga số 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) 

Xem một số plugin được nạp dinamically vì vậy bạn cần để hoạt động với họ trước khi đặt breakpoint.

Sau khi nạp bạn có thể đặt breakpoint từ vim kết nối với:

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

Tôi có sửa chữa/tinh chỉnh/phát triển rất nhiều các plugin vim nhờ plugin tuyệt vời này.

Các vấn đề liên quan