2011-12-08 20 views
46

Tôi muốn phát triển các phần mở rộng của Shell GNOME và thấy nó rất dễ dàng để bước vào quá trình phát triển nhưng tôi vẫn không thể tìm ra cách để gỡ lỗi/kiểm tra các phần mở rộng của mình một cách hiệu quả.Làm cách nào để kiểm tra/gỡ lỗi các phần mở rộng của Shell GNOME? Có công cụ nào cho điều đó không?

Có công cụ nào cho mục đích đó không? Có bất kỳ loại bàn điều khiển thời gian thực nào giống như chúng tôi có trên các trình duyệt hiện đại hay môi trường máy chủ javascript không?

Trả lời

42

Vâng, thời gian thực giao diện điều khiển được gọi là "Looking Glass" và có thể được bắt đầu bằng cách nhấn Alt + F2 và gõ lg tại dấu nhắc.

Thông tin thêm: https://live.gnome.org/GnomeShell/LookingGlass

+0

Chỉ cần một nghi ngờ nhỏ về lookingGlass: Tôi có 'global.log ('hello world'); 'bên trong một vòng lặp trong phần mở rộng của tôi, nhưng không có gì đã ghi lại trong giao diện điều khiển. Các tiện ích mở rộng có thể ghi lại các thông điệp theo chương trình không? – marcio

+0

Tôi đã có câu trả lời. Nó ghi nhật ký chính xác nhưng bạn phải tải lại môi trường vỏ gnome sau khi bất kỳ cập nhật nào trong tập lệnh (Alt + F2 và nhập 'r'). – marcio

+0

Bạn có biết tại sao lg không hoạt động từ dòng lệnh ?? !!! làm việc với alt + f2 nhưng không phải từ thiết bị đầu cuối! –

16

Kính tìm kiếm tuyệt vời. Tuy nhiên, nếu bạn cần một bàn điều khiển thẳng, bạn có thể nhận được một cái, nhưng không phải thông qua LG, ít nhất là không bằng 3,6.

Nếu bạn mở một thiết bị đầu cuối và nhập gnome-shell --replace, gnome-shell sẽ chạy từ đó, thay thế thể hiện đang chạy và đầu ra nhật ký chung sẽ xuất hiện trong bảng điều khiển đó.

Bạn có thể thử nghiệm nó với Looking Glass bằng cách làm Alt - F2lg, và sau đó global.log("foo") trong "Evaluator" tab.

+0

+1 đây là thông tin tuyệt vời, tôi đã sử dụng phương pháp này quá – marcio

+1

Khi tôi hủy gnome-shell sau khi sử dụng cách tiếp cận, mọi thứ đều bị đóng băng ngoại trừ cho con chuột của tôi. Tôi phải cứng nhắc khởi động lại máy để làm cho nó hoạt động trở lại. – EndangeredMassa

+0

Đó là vì bạn đã giết trường hợp duy nhất của gnome-shell. Thay vì giết nó bằng 'C-c' khi bạn làm xong, nhấn 'C-z' để đình chỉ nó. Sau đó gõ 'bg ' vào bảng điều khiển (bạn có thể không thấy những gì bạn đang gõ khi gõ lệnh này) và sau đó gnome-shell sẽ chạy ở chế độ nền.Tiếp theo, chạy 'disown ' để tách quy trình khỏi cửa sổ đầu cuối, sau đó bạn có thể đóng cửa sổ đầu cuối một cách an toàn. –

7

Tôi thích đọc các tệp ~/.xsession-errors~/.cache/gdm/session.log để biết thêm chi tiết. Một số thông báo lỗi có thể có mối quan hệ với các ngoại lệ hoặc lỗi khác.

+7

@ User231371 muốn chỉ ra: Trong Ubuntu gnome, nhật ký nằm trong ~/.cache/upstart/gnome-session.log. –

3

Anjuta Dev-Studio là một công cụ tuyệt vời để làm việc với các phần mở rộng gnome-shell; nó được trang bị một trình gỡ rối, trình thiết kế GUI, điều khiển phiên bản và nhiều thứ khác. Thậm chí còn có một hướng dẫn hướng dẫn sử dụng Anjuta với phần mở rộng gnome-shell dự án trên vào gnome của wiki-pages

28

On Fedora 20 (và có lẽ bất kỳ distro Linux mới), bạn có thể sử dụng lệnh:

journalctl /usr/bin/gnome-session -f -o cat 

Nó liên tục (-f) in các lỗi được tạo bởi gnome-session trong cửa sổ đầu cuối. Tôi thích cờ -o cat vì nó hiển thị tin nhắn đầy đủ mà không có dấu thời gian.

On Fedora 22, tôi tin rằng, nó được thay thế bằng:

journalctl /usr/bin/gnome-shell -f -o cat 
+2

Điều này tốt hơn 'gnome-shell --replace' vì id không đính kèm phiên gnome shell vào terminal :) – marcio

+0

Trên wubrs wubrs quá –

3

tôi không thể bình luận về câu trả lời khác, vì vậy nghĩ rằng tôi muốn thêm - tuy nhiên cuối nó có thể là:

  • Đối với bình luận 2 của câu trả lời của Geoff, chỉ cần khởi động lại vỏ thông qua alt+f2 - sau đó renter, khi điều đó xảy ra - phiên chạy cuối sẽ tự động kết thúc (ít nhất là trên Debian).

  • Tôi muốn đề xuất câu trả lời của jsnjack để gỡ lỗi chung, cũng hoạt động với Debian Jessy; có lẽ muốn sudo rằng mặc dù. Nó sẽ hiển thị các lỗi gnome, cũng như các thông điệp global.log() trong bất kỳ thiết bị đầu cuối nào bạn chạy nó.

Nếu có gì, điều này cung cấp tham chiếu đầy đủ hơn cho tôi - khi tôi xem trang này nhiều lần khi tham khảo thông tin, tôi không giữ lại trong bộ nhớ.

1

Các câu trả lời khác không thực sự hiệu quả đối với tôi khi phát triển tiện ích mở rộng của riêng tôi. Điều gì đã làm tuy nhiên là:

journalctl /usr/lib/gnome-session/gnome-session-binary -f -o cat 

Nếu bạn muốn dọn dẹp đầu ra để chỉ thấy ứng dụng của bạn, bạn có thể sử dụng:

journalctl /usr/lib/gnome-session/gnome-session-binary -f -o cat | grep [myAppId] 

Nếu bạn cũng muốn truy cập các bản ghi lỗi không sử dụng các phương pháp trên ở trên bạn có thể sử dụng:

global.log('[myAppId]', valueToLog); 

Nếu bạn không biết đường dẫn chính xác đến phiên gnome của bạn, bạn cũng có thể sử dụng:

journalctl -f | grep gnome-session 

Tại sao nó không hoạt động có lẽ vì đường dẫn nhị phân-gnome-phiên-nhị phân của tôi khác nhau, có thể liên quan đến phiên bản mới hơn của gnome đang được cài đặt.

+0

Trên Fedora 26, đường dẫn đúng là'/etc/libexec/gnome -session-binary'. – akaihola

+0

Tuy nhiên, thông báo 'global.log()' không bật lên trong đầu ra 'journalctl', cũng như trong Tìm kiếm Glass. Có thể đăng nhập có thể bị tắt theo mặc định trên Fedora 26 không? – akaihola

+0

Thay vào đó, hãy ghi nhật ký * do * hiển thị trong 'journalctl/usr/bin/gnome-shell'. – akaihola

1

Chúng tôi đang phát triển một gói emacs nhằm phát triển mở rộng gnome-shell ở đây: https://github.com/paperwm/gnome-shell-mode

Nó vẫn còn trong "beta" (Tháng Mười Hai 2017.), Nhưng nó đã rất hữu ích.

Tính năng

  • Autocompletion (muuuch tốt hơn so với những gì tìm kính cung cấp)
  • Eval của dòng, lựa chọn, chức năng hiện nay, bộ đệm (tùy chọn dán kết quả vào bộ đệm trong một chú thích)
  • Làm nổi bật lỗi khi đánh giá
  • Trình trợ giúp tra cứu tài liệu
  • Trình trợ giúp tải lại mô-đun bạn đang làm việc với witho ut khởi động lại gnome-shell