首页
版块
WIKI
按主题
按用户
语言:
中文
English
调试 Gnome-Shell 经验分享
社区开发
3251
次浏览 ·
2
个回复 ·
电梯直达
到第
楼
确定
186******98
deepin
发表于 2012-01-13 00:44
楼主
最近在写 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
Copy the Code
4. 用下面的代码启动 gdb:
gdb /usr/bin/gnome-shell
Copy the Code
5. 在 gdb 中输入:
r --replace
Copy the Code
6. 按 Ctrl+Alt+F7 切换回 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/
[email protected]
/extension.js:625
...
Copy the Code
从上面的堆栈信息就可以快速定位到 625 行代码有问题。
这样如果要重新加载 gnome-shell (无限次哦), 直接在 gdb 输入
r --replace
Copy the Code
就可以了, 所有的程序都不会因为 gnome-shell 的崩溃而需要重新启动, 节省了大量的调试时间。
好了, 上面就是完整的调试 gnome-shell 的流程, 希望对大家调试 gnome-shell 有所帮助。Enjoy!
回复
点赞0
收藏
只看作者
所有回复
hewen1125
deepin
发表于 2012-01-15 00:15
沙发
8-) 非常感谢分享~
回复
点赞0
只看作者
edeas0
deepin
发表于 2012-09-28 02:20
板凳
感谢!
回复
点赞0
只看作者
请先
登录
账号再进行相关操作
精品汇总
换一批
【截图录屏】5月功能优化方案公示
deepin MCP 服务上线 !首个系统级MCP服务让你解放双手!
grub菜单显示不全的手动处理方法。
Q&A | deepin 25用户常见问题解答——磐石不可变系统篇
从NVMe硬盘节能导致的死机问题展开谈谈
玲珑是个什么宝,一个架构一次构建可跨系统运行的包格式
发布帖子
热帖排行
换一批
鸿蒙电脑真机,和deepin有些像,但将deepin还没实现的给实现了。
鸿蒙来了,竞争更激烈了,deepin要更加努力呀!
鸿蒙PC要发布了,UOS和麒麟的黑稿越来越多了
GXDE 2025 发布:支持从旧版升级,基于 Debian 13
好家伙,华为将系统文件夹基本上以中文命名。
我反映了2年的BUG,今天依旧在。。。
热门活动
查看更多
所以方法就是让 gnome-shell 在 gdb 里面跑, 这样 gnome-shell crash 以后可以从 gdb 得到堆栈信息从而快速调试程序。
下面是完整的调试步骤:
1. 正常登入 gnome-shell 桌面
2. 按 Ctrl+Alt+F1 进入终端并用同样的用户名登入
3. 用下面的代码导出 DISPLAY(这样gnome-shell就可以在你指定的DISPLAY下显示):
4. 用下面的代码启动 gdb:
7. 当 gnome-shell 崩溃以后, 按 Ctrl+Alt+F1 切回终端就可以看到 gdb 里面的堆栈信息:
比如我写的3D切换扩展代码有Bug, 在 gdb 可以看到一下信息:
从上面的堆栈信息就可以快速定位到 625 行代码有问题。
这样如果要重新加载 gnome-shell (无限次哦), 直接在 gdb 输入
好了, 上面就是完整的调试 gnome-shell 的流程, 希望对大家调试 gnome-shell 有所帮助。Enjoy!