調試 Gnome-Shell 經驗分享

來源:互聯網
上載者:User

最近在寫 gnome-shell 的外掛程式, 一般外掛程式的異常是會被 gnome-shell 捕獲到的, gnome-shell 一旦捕獲到外掛程式的異常會立即重載最多兩次), 因為 gnome-shell 每次重載

的時候會自動清空 looking glass 裡滿的日誌資訊, 所以我們不知道到底是代碼什麼地方錯了, 而且超過兩次後 gnome-shell 是不會再次重載的,所以就不得不重啟登入管理器

重新進入案頭所有進程都會被強制關閉), 這樣是非常浪費調試時間的。

所以方法就是讓 gnome-shell 在 gdb 裡面跑, 這樣 gnome-shell crash 以後可以從 gdb 得到堆棧資訊從而快速偵錯工具。

下面是完整的調試步驟:

1. 正常登入 gnome-shell 案頭
2. 按 Ctrl+Alt+F1 進入終端並用同樣的使用者名稱登入
3. 用下面的代碼匯出 DISPLAY讓gnome-shell 在你指定的DISPLAY下顯示):

export DISPLAY=:0

4. 用下面的代碼啟動 gdb:

gdb /usr/bin/gnome-shell

5. 在 gdb 中輸入:

r --replace

6. 按 Ctrl+Alt+F7 切換回 gnome-shell 案頭, 然後可以重新暢遊Gnome Shell了。
7. 當 gnome-shell 崩潰以後, 按 Ctrl+Alt+F1 切回終端就可以看到 gdb 裡面的堆棧資訊:
比如寫3D 切換擴充代碼有Bug, 在 gdb 可以看到一下資訊:

Exception was: Error: Expected type 'ClutterActor' but got 'GObject'        ...       /home/andy/.local/share/gnome-shell/extensions/windows-alt-tab-3d@linuxdeepin.com/extension.js:625        ...

從上面的堆棧資訊就可以快速定位到 625 行代碼有問題。

這樣如果要重新載入 gnome-shell (無限次哦), 直接在 gdb 輸入

r --replace

就可以了, 所有的程式都不會因為 gnome-shell 的崩潰而需要重新啟動, 節省了大量的調試時間。

好了, 上面就是完整的調試 gnome-shell 的流程, 希望對大家調試 gnome-shell 有所協助。Enjoy!

原文地址:http://planet.linuxdeepin.com/2012/01/12/test-gnome-shell-tips-fo-manateelazycat/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.