Cách gỡ lỗi Helm


7

Tôi đang gặp một số rắc rối với helm, vì vậy tôi đã debug-on-errornỗ lực để xác định vấn đề. Bây giờ bất cứ khi nào sự cố xảy ra, *Backtrace*bộ đệm xuất hiện như mong đợi, nhưng tôi vẫn ở một trong các chế độ chính của helm và tôi không thể điều hướng bộ đệm backtrace và gỡ lỗi bình thường.

Chế độ chính vẫn đang sử dụng bộ thu nhỏ, và dường như cũng "đánh cắp" các chuỗi chính của tôi và ngăn tôi gỡ lỗi. Khi tôi thoát khỏi helm-mulit-occurtiến trình, bộ đệm backtrace sẽ bị xóa và tôi không thể tiếp tục gỡ lỗi.

Có cách nào để "tạm dừng" một chế độ chính trong khi vẫn giữ trình gỡ lỗi elisp chạy để tôi có thể gỡ lỗi như bình thường không?


Chức năng nào đang kích hoạt backtrace? Tôi đã sử dụng debug-on-entrytrên helm(debug-on-lỗi sẽ không được kích hoạt khi có những không có lỗi) và tôi vẫn có thể gỡ lỗi.
Vamsi

@Vamsi: Tôi đang sử dụng helm-multi-occurvà lỗi cụ thể xảy ra một thời gian sau khi helm chạy thành công là helm-interpret-value: Symbol must be a function or a variable.
nispio

Trong sơ đồ phím của chế độ chính này, liên kết khóa f5 với cửa sổ khác. Sau đó, bạn sẽ có thể chuyển từ nó. Ngoài ra, đặt enableuff đệ quy-đệ quy thành t.
Malabarba

@Malabarba: Lệnh other-windowkhông làm gì trong chế độ này và xe buýt nhỏ dường như luôn có trọng tâm. C-h mđược ánh xạ tới lệnh helm-helpnhưng chạy thủ công describe-modecho tôi biết rằng tôi đang ở minibuffer-inactive-mode.
nispio

1
Nhìn vào backtrace, bạn sẽ có thể biết hàm nào đang gọi helm-phiên dịch-giá trị. Sau đó, bạn có thể Edebug nó và tìm hiểu những gì đang xảy ra.
Malabarba

Câu trả lời:


3

Lệnh helm-toggle-suspend-updateđược ràng buộc C-!theo mặc định. Nó không đóng helm, hoặc kết thúc bản cập nhật đệ quy, nhưng nó tạm thời làm cho chế độ helm bớt "xâm lấn" hơn nhiều. Đình chỉ cập nhật sẽ giữ cho helm không "đánh cắp" tất cả đầu vào bàn phím và chuột của bạn, điều này có thể cho phép bạn gỡ lỗi quá trình helm trong một cửa sổ khác.


2

Không thể "tạm dừng" một chế độ chính, nhưng như được đề xuất trong các nhận xét cho câu hỏi của bạn, có thể di chuyển ra khỏi bộ đệm gây ra lỗi và bộ đệm backtrace. Nếu chế độ của bộ đệm nơi xảy ra lỗi sẽ ghi đè các ràng buộc toàn cục thông thường để chuyển sang bộ đệm khác thì việc thêm khóa rõ ràng vào sơ đồ bàn phím của nó có thể giúp bạn lấy lại khả năng chọn bộ đệm khác.

Tuy nhiên, cũng có thể chế độ đọc đầu vào của người dùng theo cách dễ hiểu hơn, khiến nó không thể di chuyển đi được. Trong trường hợp bộ đệm / chế độ hoàn thành như thế helmcó thể có ý nghĩa.

Tuy nhiên, bạn có thể chỉ cần bỏ helmvà sau đó đi đến *Backtrace*. Bộ đệm sẽ không được hiển thị trong một cửa sổ nữa, nhưng nó vẫn tồn tại và chứa backtrace mới nhất. Bạn đề cập rằng "bộ đệm backtrace bị xóa"; bộ đệm chỉ đơn giản biến mất hoặc nội dung của nó thực sự bị xóa? Trong trường hợp sau, bạn có thể muốn mở một sự cố trên helmkho lưu trữ, vì đây có thể được coi là một lỗi.


Mặc dù helm vẫn còn hoạt động, tôi đã thử nhấp vào bộ đệm backtrace, sắp xếp lại các chuỗi phím và gọi M-x other-windowtrực tiếp, nhưng không ai trong số này cho phép tôi lấy nét từ bộ thu nhỏ hoàn thành helm. Khi bộ đệm backtrace xuất hiện lần đầu tiên, đó là cửa sổ hoạt động, nhưng hầu như bất kỳ phím bấm nào đều bị "đánh cắp" bởi helm và đưa tôi trở lại chế độ hoàn thành. Khi tôi thoát helm với C-gbộ đệm backtrace sẽ bị xóa, không có thông tin hoàn tác.
nispio

1
Âm thanh như helm sử dụng chỉnh sửa đệ quy (xem (elisp)Recursive Editing. Điều này có ý nghĩa đối với một gói như thế helmnhưng cũng có nghĩa là việc bỏ helm(bằng cách thường xuyên gọi lệnh hoặc hủy bỏ trong trường hợp của bạn) sẽ trở về mức trước đó, khiến cho mức độ hiện tại bị mất Vì vậy, bạn đã hoàn toàn đi đúng hướng. Có lẽ helm đã cung cấp giải pháp cho vấn đề này, hãy kiểm tra faq của nó, nếu không thì mở một vấn đề M-x fundamental-modecũng có thể hoạt động, mặc dù cũng có thể điều này thay đổi chế độ trong bộ đệm sai.
tarsius

1
lỗi phân tích nhận xét trước đó: dấu ngoặc đơn chưa từng có. ;-)
nispio

Không thực sự biết ý của bạn là gì.
tarsius

Hãy thay đổi tiêu đề. Trong hầu hết các trường hợp, "gỡ lỗi các chế độ chính" không gây ra bất kỳ vấn đề nào; vấn đề này là rất cụ thể để lãnh đạo.
tarsius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.