2010-10-25 50 views
2

我在玩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;大部分時間使用的資源都是以正確的順序發佈的,但是在某個階段,這會混合起來,然後發生錯誤。
如何解釋上述內容以查找錯誤的位置/原因?

+0

爲什麼你不使用gdb來找出哪裏出了問題? – ssegvic 2010-11-07 21:56:13

+0

@ssegvic:你可以將任何指針放入我可以使用gdb嘗試隔離錯誤的指針嗎?我上面的編輯是一個表面使用的結果,但回溯輸出不一樣。任何想法你都會受到歡迎。 – slashmais 2010-11-08 05:09:33

+0

我指的是我認爲通常的調試迭代:i)用調試信息(-g,NDEBUG未定義)構建可執行文件,ii)從gdb(gdb a.out,run)啓動程序,iii)重現崩潰,iv)檢查來源(回溯,上,下)。我的意思是你一定可以使用objdump和朋友找到與你的backtraces中的行對應的源代碼,但使用gdb應該是一個更舒適的選擇。 HTH – ssegvic 2010-11-08 08:29:19

回答

1

1)建立與調試symbold(在GCC程序,通過-g選項)
2)使核心文件,一旦你的應用程序崩潰,在覈心文件GDB打開它,並檢查回溯
3)你的應用程序是多線程的並使用xlib?如果是這樣,你需要啓用對xlib函數的多線程訪問。
4)安裝ddd,並使用它運行你的應用程序(ddd是linux debuger gdb的gui前端)

+0

thanx,會在這裏給它一個bash&report。只需要騰出時間... – slashmais 2011-02-14 18:07:34