我在玩X開發。我有一個基本的原始-WM去工作一段時間,然後在相當隨機的時間後產生這些錯誤。如何解釋X程序回溯報告?
[編輯]
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]
它看起來像在我的應用某種同步的bug;大部分時間使用的資源都是以正確的順序發佈的,但是在某個階段,這會混合起來,然後發生錯誤。
如何解釋上述內容以查找錯誤的位置/原因?
爲什麼你不使用gdb來找出哪裏出了問題? – ssegvic 2010-11-07 21:56:13
@ssegvic:你可以將任何指針放入我可以使用gdb嘗試隔離錯誤的指針嗎?我上面的編輯是一個表面使用的結果,但回溯輸出不一樣。任何想法你都會受到歡迎。 – slashmais 2010-11-08 05:09:33
我指的是我認爲通常的調試迭代:i)用調試信息(-g,NDEBUG未定義)構建可執行文件,ii)從gdb(gdb a.out,run)啓動程序,iii)重現崩潰,iv)檢查來源(回溯,上,下)。我的意思是你一定可以使用objdump和朋友找到與你的backtraces中的行對應的源代碼,但使用gdb應該是一個更舒適的選擇。 HTH – ssegvic 2010-11-08 08:29:19