修复pixman_region_init_rect错误

时间:2015-11-01 02:34:50

标签: pixman

我知道这是一个已经存在一段时间并且已修复的错误。但我的情况似乎有点不同。当我打开通过终端在gedit中说一个文本文件时,我收到此错误:

*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug

我知道这是因为我的主题,因为我在切换主题时没有收到错误。但我真的很喜欢我的主题而不想改变它。相反,我想弄清楚哪些或哪些行导致错误,并纠正它们。但是,我不知道如何去做。在Android中,我可以简单地运行adb logcat,并查看导致问题的原因。但我不在Android上,我在Linux Mint 17.2上运行肉桂桌面。所以,我的问题是,如何记录此错误或以某种方式跟踪它?

1 个答案:

答案 0 :(得分:0)

正如错误消息所示,您需要使用调试器并在'_pixman_log_error'函数上设置断点。 Linux中的标准调试器是gdb,您可以在此处找到完整的用户手册:https://sourceware.org/gdb/current/onlinedocs/gdb/

在您的特定用例中,最佳选择可能是将调试器附加到正在运行的进程。这可以通过将gdb作为“gdb -p pid ”启动来完成,其中 pid 是进程ID号。然后在gdb命令提示符下输入“b _pixman_log_error”(在_pixman_log_error上设置断点),然后输入“c”(继续)。执行将继续,直到到达断点并返回到gdb命令提示符。然后输入“bt”(堆栈回溯),它将打印调用函数链。

请注意,如果违规过程对于在您的计算机上运行桌面环境至关重要,那么附加到它将只会冻结系统。最好的方法是使用另一台计算机(例如笔记本电脑)并通过ssh从它登录到您的主计算机。然后gdb可以在ssh会话中运行。