如何制作Xlib打印错误信息,但不退出?

时间:2012-10-30 10:48:05

标签: error-handling xlib

“默认处理程序的操作是打印解释性消息并退出。” (link)

此类消息的示例:

X Error of failed request:  BadWindow (invalid Window parameter)
  Major opcode of failed request:  12 (X_ConfigureWindow)
  Resource id in failed request:  0xc0007a
  Serial number of failed request:  140
  Current serial number in output stream:  141

如果我设置(XSetErrorHandler)我自己的“忽略一切”错误处理程序,“解释性消息”就会消失。

如何使Xlib忽略错误,但仍然会打印错误消息?

2 个答案:

答案 0 :(得分:1)

如果您实际上想要这些错误消息,则几乎可以有两个选择:

  • _XPrintDefaultError中抽出XlibInt.c以及一些专用标头(使用库专用定义的所有注意事项)。
  • 重新定义exit(),使其在_XDefautError调用时不退出。

两者都不是特别漂亮,两者都可能破坏并降低您的便携性,但是它们确实有效。

答案 1 :(得分:0)

您必须格式化自己的讯息。消息的内容是XErrorEvent结构的内容:

http://tronche.com/gui/x/xlib/event-handling/protocol-errors/default-handlers.html