我正在玩 X 开发。我有一个基本的 proto-WM 可以运行一段时间,然后在相当随机的时间后产生这些错误。
[编辑]
Locking assertion failure. Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0x7f71dcf9a9ac]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x24) [0x7f71dcf9aa54]
#2 /usr/lib/libX11.so.6 [0x7f71ddefe340]
#3 /usr/lib/libX11.so.6(XAllocColor+0xc1) [0x7f71ddedada1]
#4 /home/mais/code/simplewin/bin/Debug/simplewin [0x408e0b]
#5 /home/mais/code/simplewin/bin/Debug/simplewin [0x409062]
#6 /home/mais/code/simplewin/bin/Debug/simplewin [0x407a9d]
#7 /home/mais/code/simplewin/bin/Debug/simplewin [0x406c6d]
#8 /home/mais/code/simplewin/bin/Debug/simplewin [0x402734]
#9 /home/mais/code/simplewin/bin/Debug/simplewin [0x407e37]
#10 /home/mais/code/simplewin/bin/Debug/simplewin [0x407304]
#11 /home/mais/code/simplewin/bin/Debug/simplewin [0x407335]
#12 /lib/libpthread.so.0 [0x7f71ddc9afc7]
#13 /lib/libc.so.6(clone+0x6d) [0x7f71dd26a59d]
Locking assertion failure. Backtrace:
#0 /usr/lib/libxcb-xlib.so.0 [0x7f71dcf9a9ac]
#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_lock+0x17) [0x7f71dcf9ab17]
#2 /usr/lib/libX11.so.6 [0x7f71ddefe420]
#3 /usr/lib/libX11.so.6 [0x7f71ddefeb5b]
#4 /usr/lib/libX11.so.6 [0x7f71ddefeeb5]
#5 /usr/lib/libX11.so.6(XNextEvent+0x68) [0x7f71ddee5898]
#6 /home/mais/code/simplewin/bin/Debug/simplewin [0x404bc2]
#7 /lib/libpthread.so.0 [0x7f71ddc9afc7]
#8 /lib/libc.so.6(clone+0x6d) [0x7f71dd26a59d]
这看起来像是我的应用程序中的某种同步错误;大部分时间使用的资源以正确的顺序释放,但在某些阶段这会混淆,然后发生错误。
我如何解释上述内容以找到错误的位置/原因?
最佳答案
1) 使用 debug symbold 构建程序(在 gcc 上,传递 -g
选项)
2)启用核心文件,一旦你的应用程序崩溃,用核心文件在gdb中打开它,并检查回溯
3) 您的应用程序是多线程的并使用 xlib 吗?如果是这样,您需要启用对 xlib 函数的多线程访问。
4) 安装 ddd,并使用它运行您的应用程序(ddd 是 linux 调试器 gdb 的 gui 前端)
关于c++ - 我如何解释 X 程序回溯报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4014308/