唉~last誤我一生,每個人的bug都輪流ㄅㄧㄚ\ ㄎㄤXDDDD
希望沒有下一個犧牲者了

昨天tiger debug時卡到陰,今天才想出問題所在

我們每個人習慣都會在函式裡面加上assert,
一來確定上面呼叫我的人,他傳的參數是正確的!!
二來,用gdb debug的時候會自動在assert停下來,只要下where,就可以知道function call的stack情況

問題就出現在這裡明明底層FN的assert發生了,可是上一層的assert卻沒有作用,
然後printf也沒印出東西,用gdb看一下是發生在b段呼叫函式FN,printf在a段,當然打不著,

好吧那printf加到b段去,然後又沒印@@,gdb結果,又是一樣的情形,
這是caller又跑到c段去了....

又繼續重複了1,2之後終於找到出錯的那一行,可是把printf拿掉,又回到a....

雖然後來bug不在這裡面,所以這鬼問題,直到今天早上才想出來為甚麼...
因為我們的Makefile裡面的CFLAGS都設-O5,最佳化的情況下,有些程式碼會被重排,
而且那份code裡面很多地方重複性很高,應該八九不離十這個原因

我把-O5改成-O0,一次就到位,所以這個推論應該沒有錯XD

雖然不是第一次發生因為-O5而造成程式碼行數錯亂了,不過這麼卡到陰還真是第一次,
以後作source level debug,記得拿掉-O5哦

koukaipan 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • rita70924
  • 有聽沒有懂XD

    我同學她男朋友說現在業界比較需要嵌入式,很後悔當初沒修嵌入式,我同學就說不知道要不要下學期修個嵌入式?請問版主大大的意見如何咧?
  • 叫什麼版主大大阿,我們是有這麼不熟喔/___\
    你不是修過多媒體嵌入了,不然你下學期跟烏拉一起來修驅動程式看看呀~趁著在學校學,比外面的補習班便宜太多了!

    koukaipan 於 2009/02/17 11:03 回覆

  • rita70924
  • 版主大大是敬稱呀(請配合我的顯圖服用~啾咪)

    是說主要都是宗胤弄的,我只有一開始畫個介面給他用而已..Orz 烏拉下學期要去修驅動程式嗎?會不會很囧 我要老實說我真的很弱..Orz