2010-10-03 93 views
0

我有一個SIGSEGV我試圖追查在我的代碼,但我發現了奇怪的回溯這樣了GDB的:0x2e2e2e2e在GDB回溯?

#1 0x00407d15 in print_banner (msg=0x2e2e2e2e <Address 0x2e2e2e2e out of bounds>) 
    at ../include/test_util.hh:20 
#2 0x2e2e2e2e in ??() 
#3 0x2e2e2e2e in ??() 
#4 0x2e2e2e2e in ??() 
#5 0x2e2e2e2e in ??() 
#6 0x2e2e2e2e in ??() 
#7 0x2e2e2e2e in ??() 
#8 0x2e2e2e2e in ??() 
#9 0x2e2e2e2e in ??() 
#10 0x2e2e2e2e in ??() 
#11 0x2e2e2e2e in ??() 
#12 0x2e2e2e2e in ??() 
#13 0x2e2e2e2e in ??() 
#14 0x2e2e2e2e in ??() 
#15 0x2e2e2e2e in ??() 
#16 0x2e2e2e2e in ??() 
#17 0x2e2e2e2e in ??() 
#18 0x2e2e2e2e in ??() 
#19 0x2e2e2e2e in ??() 
#20 0x2e2e2e2e in ??() 
#21 0x2e2e2e2e in ??() 
#22 0x2e2e2e2e in ??() 
#23 0x2e2e2e2e in ??() 
#24 0x2e2e2e2e in ??() 
#25 0x2e2e2e2e in ??() 
#26 0x2e2e2e2e in ??() 
#27 0x2e2e2e2e in ??() 
#28 0x2e2e2e2e in ??() 
#29 0x2e2e2e2e in ??() 
#30 0x2e2e2e2e in ??() 
#31 0x2e2e2e2e in ??() 
#32 0x2e2e2e2e in ??() 
#33 0x2e2e2e2e in ??() 
#34 0x2e2e2e2e in ??() 
#35 0x2e2e2e2e in ??() 
#36 0x2e2e2e2e in ??() 
#37 0x2e2e2e2e in ??() 
#38 0x2e2e2e2e in ??() 
#39 0x2e2e2e2e in ??() 
#40 0x2e2e2e2e in ??() 
#41 0x2e2e2e2e in ??() 
#42 0x2e2e2e2e in ??() 
#43 0x2e2e2e2e in ??() 
#44 0x2e2e2e2e in ??() 
#45 0x2e2e2e2e in ??() 
#46 0x2e2e2e2e in ??() 
#47 0x2e2e2e2e in ??() 
#48 0x2e2e2e2e in ??() 

這是不是很幫助其他比告訴我print_banner正在獲取0x2e2e2e2e,因爲它的msg參數(const char *),這些值都來自哪裏,GDB試圖告訴我具體的東西在這裏?

+0

如果您顯示一些源代碼,我們可能會幫助您。 – karlphillip 2010-10-03 19:20:03

回答

11

當你損壞堆棧並覆蓋gdb需要的東西時,你會得到這個。 聽起來像你用一堆「....」字符溢出緩衝區。

valgrind這樣的工具可以更輕鬆地幫助您診斷此類問題。

+0

print_banner函數確實爲我的消息填充了足夠的'。'。字符對齊到屏幕右側,所以我想你完全正確,我會專注於此,感謝您的幫助。 – 2010-10-03 19:24:03

+0

果然,正在下溢一個unsigned int,所以我寫了大量的'。'。記憶和砸碎一切到地獄。 – 2010-10-03 19:42:37