Gỡ lỗi khối mã trong chế độ org


11

Có công cụ nào khả dụng để giúp việc theo dõi lỗi trong các khối chế độ org dễ dàng hơn không? (Tôi đang làm việc với python cụ thể)

Quy trình công việc hiện tại của tôi là sao chép mã hoạt động vào một khối nguồn và cố gắng chỉ thực hiện các sửa đổi tối thiểu. Nếu xảy ra lỗi lớn, tôi sẽ sao chép nó trở lại tệp khác hoặc làm rối khối và gỡ lỗi tệp kết quả.

Có thiếu công cụ nào không? (ví dụ, một cái gì đó giống như chế độ biên dịch trong đó nó sẽ đưa bạn đến dòng lỗi.)

Chỉnh sửa: ví dụ, tôi vừa tìm thấy Cc Cv v, nó mang đến một bộ đệm với các tham chiếu noweb được mở rộng. Thật không may, nó không bao gồm các đối số tiêu đề, vì vậy mã từ này không thể chạy mà không nhập các đối tượng trong trình thông dịch trước. Tương tự, nếu tôi có câu lệnh return, nó sẽ không được thực thi và bộ đệm không thể chỉnh sửa được, do đó, phải thực hiện một số bước để có được nguồn có thể chạy được từ một khối python.


3
Xem emacs.stackexchange.com/questions/13244/ . Giải pháp yêu thích hiện tại của tôi là (org-src-debug). Điều này có lợi thế là bạn có thể gỡ lỗi các khối mã nguồn với các đối số đầu vào.
Tobias

Nhận xét cho những người khác có vấn đề tương tự: user2699 đã chỉnh sửa câu hỏi để làm rõ rằng anh ta muốn gỡ lỗi các khối mã nguồn python . Nhận xét cuối cùng của Tobias chỉ áp dụng cho việc thực thi các khối mã emacs-lisp .
Tobias

1
Bạn đã thêm một :sessiontiêu đề vào khối mã của bạn? ví dụ :session *my-python*. Sau đó, chỉ cần xem thực thi tập lệnh trong *my-python*bộ đệm trong khung hoặc cửa sổ khác. Tôi đoán bạn muốn một cái gì đó tinh vi hơn chính xác?
Melioratus

@Melioratus, nó hơi thô sơ (dường như không xử lý lỗi tốt và thêm đầu ra bổ sung trong bảng điều khiển python), nhưng nó tốt hơn nhiều so với không có gì. Và giao diện điều khiển python rất đẹp. Bạn nên gửi nó như là một câu trả lời.
dùng2699

@Tobias, Cảm ơn, đó là thứ tôi đang tìm kiếm, không cụ thể cho elisp.
dùng2699

Câu trả lời:


7

Phương pháp 1

  1. Thêm :sessiontiêu đề vào khối nguồn của bạn.

    Trong ví dụ này, sử dụng tiêu đề : session sẽ thực thi mã bên trong bộ đệm có tên *my-python*và hiển thị các thông báo gỡ lỗi.

    #+BEGIN_SRC python :session *my-python*
      'Hello {0}\n'.format('World')
    #+END_SRC
    

    Lời khuyên:

    • Sử dụng C-c C-v C-zđể phân chia màn hình theo chiều dọc và hiển thị *my-python*bộ đệm tương tác .
    • Sử dụng C-c C-v ?để hiển thị các phím tắt hữu ích khác.

Cách 2

  1. Nơi điểm trong khối mã và chỉnh sửa khối sử dụng C-c ', ví dụ org-edit-special. Phương pháp này sẽ cho phép bạn sử dụng python-modechức năng tích hợp.

  2. Bắt đầu trình thông dịch python với C-c C-p, nó sẽ chia cửa sổ và mở tên bộ đệm *Python*. Để chuyển sang bộ đệm trình thông dịch python nhấn C-c C-z.

    Lưu ý: Gần đây tôi nhận thấy rằng một *Warnings*bộ đệm được hiển thị thay thế. Chỉ cần đặt điểm bên trong *Warnings*bộ đệm và nhấn qđể hiển thị *Python*bộ đệm.

  3. Khi kết thúc, tuyên truyền mã cập nhật của bạn thành khối mã với C-c 'hoặc loại bỏ mọi thay đổi với C-c C-k.


Lưu ý mã này đã được kiểm tra bằng:
phiên bản emacs: GNU Emacs 26.1
phiên bản chế độ org: 9.1,14

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.