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
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.
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 đó.
Đố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.
- 1. Dấu vết cuộc gọi trong java
- 2. Gỡ lỗi OutputDebugString cuộc gọi trong Delphi
- 3. Google Chrome: Cách gỡ lỗi các lỗi "Kích thước ngăn xếp tối đa cuộc gọi tối đa" ngẫu nhiên
- 4. Làm cách nào để gỡ lỗi các sự kiện JAVASCRIPT? Hoặc làm thế nào để làm cho tất cả các chức năng gọi dấu vết?
- 5. Kêu gọi các cuộc gọi để gỡ lỗi() trong if isDebugEnabled(): một chính sách tốt?
- 6. Gỡ lỗi gist-vim
- 7. vết vs gỡ lỗi trong NET BCL
- 8. Gỡ lỗi javascript trực tiếp bằng cách ghi lại các cuộc gọi và tham số chức năng
- 9. Quản lý các plugin Vim
- 10. Các dấu + ở cuối mỗi dòng dấu vết là gì?
- 11. Dấu hoa thị bên ngoài các cuộc gọi hàm
- 12. Dấu vết của các chương trình được thực hiện được gọi là bash script
- 13. Lỗi gỡ lỗi: Hiển thị tên của hàm tại mỗi cuộc gọi
- 14. clojure: thêm một dấu vết gỡ lỗi cho mọi chức năng trong một không gian tên?
- 15. nhận dấu vết ngăn xếp trên lỗi tryCatch'ed trong R
- 16. try-lock cuộc gọi mutex và các cuộc gọi CAS
- 17. Bước qua các cuộc gọi thư viện với gdb/gdbserver
- 18. gỡ lỗi tin nhắn/Dấu vết sử dụng ELMAH trong ứng dụng MVC
- 19. Điểm ngắt không (dấu vết) trong Javascript?
- 20. Tìm dấu vết ngăn xếp trong Eclipse với Android
- 21. Các phương thức gọi từ Trình gỡ lỗi Xcode?
- 22. vim và python script gỡ lỗi
- 23. Dấu chấm-cắt làm gì với PHP bao gồm các cuộc gọi?
- 24. Dấu vết ngăn xếp ngoại lệ Javascript
- 25. Bỏ dấu chấm khi chaining cuộc gọi
- 26. Gỡ lỗi các thư viện đã tháo rời với gdb
- 27. Bắt dấu vết ngăn xếp của một lỗi trong ExtendScript
- 28. Tôi có cần gọi các cuộc gọi MessageBox không?
- 29. không có dấu vết ngăn xếp cho các lỗi nút hoa nhài
- 30. Gỡ lỗi các sự kiện JavaScript với Firebug