Kate 在启动的控制台上发出调试消息

Kate 在启动的控制台上发出调试消息

我是 Linux 新手。我使用 Ubuntu 11.04。每当我从命令行使用 kate 打开文件时,使用“kate &”(或不带“与”符号),Kate 就会开始在控制台上显示消息。当我保存文件或关闭文件时,它会不断显示这些消息。在我看来,它们看起来像调试消息(下面的示例)。我使用 Synaptic 包管理器安装了 Kate。卸载和安装开发版本没有任何变化。很快我的控制台就变得混乱了。有没有办法隐藏这些消息?Kate 设置中也没有明确的信息。

谢谢你,

这些消息看起来像

kate(13412)/kate-filetree KateFileTreeModel::handleInsert: BEGIN!
kate(13412)/kate-filetree KateFileTreeModel::handleInsert: creating a new root
kate(13412)/kate-filetree ProxyItem::ProxyItem: ProxyItem(0x1796840,0x0,-1,QObject(0x0)
....
kate(13435)/kate-filetree KateFileTreeModel::documentActivated: adding viewHistory ProxyItem(0x1eb7cf0,0x1eb6830,0,KateDocument(0x1d93ea0) , "Untitled" )
kate(13435)/kate-filetree KateFileTreeModel::updateBackgrounds: BEGIN!
kate(13435)/kate-filetree KateFileTreeModel::updateBackgrounds: END!
kate(13435)/kate-filetree KateFileTreeModel::documentActivated: END!
kate(13435)/kate-filetree KateFileTreePluginView::viewChanged: END!
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x5601b42
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x5601b42

答案1

KDE 论坛上的这个帖子解释了它正在做什么以及如何停止它。

http://forum.kde.org/viewtopic.php?f=22&t=93955

因为您没有禁用调试消息。

打开“kdebugdialog”,搜索“kate”,然后取消选中所有复选框。现在,kate 不会再和你说话了。

答案2

调试消息通常写入标准错误,即控制台中用 2 表示的文件句柄。您可以重定向它而不影响输出到标准输出(文件句柄 1),方法是像这样启动应用程序

kate 2>/dev/null

&如果您愿意,您也可以附加。

这里的数字 2 代表文件句柄 2,它>是 shell 中的重定向操作符,/dev/null是一个“黑洞”设备——它会吞噬写入它的所有内容,因此它会“消失”(不会出现在控制台中)。

您可以通过替换文件名来捕获标准错误输出/dev/null。在这种情况下,输出将发送到文件,而不是控制台。

如果应用程序正在将调试消息写入标准输出,则可以将数字 2 替换为数字 1(参见上文)——请注意,在这种情况下,正常消息也将被重定向。

您可以同时重定向标准输出和错误,最简单的方法是

kate 2>&1 1>/dev/null

此处&1表示应将标准错误重定向到的文件句柄 1。 使用 是&为了将其与名为 1 的文件区分开来。

有关重定向的更多信息,请阅读 shell 手册(例如狂欢

答案3

关闭所有调试功能仍然会给我带来一些上下文错误 - 这很烦人。所以我采取了另一个技巧(部分由 Attila 解释:

移动 Kate 可执行文件并将其替换为脚本:

cd /usr/bin
sudo mv kate kate_exec
sudo touch kate
sudo chmod 755 kate
sudo vim kate

在 vim(或其他编辑器)中将 Kate(现在是脚本)更改为

kate_exec $@ 2> /dev/null &

您不需要&在末尾添加,这只是我的偏好,这样我就可以继续在终端中输入内容 - Attila 继续解释了大部分内容。这里的关键是将所有参数传递给 kate 可执行文件$@并重定向 stderr 2> /dev/null

相关内容