gdb 调试 TuMediaService
gdb 調(diào)試 TuMediaService
github地址
起因
- 首先需要有 armgdb 環(huán)境
- 運行 ./armgdb ./TuMediaService 進入 gdb 模式
- b hi3531_trcod_interface.cc:98 打斷點
- r 運行程序
- print this->vdec_config_path_ 打印關(guān)鍵值
在這里我們關(guān)注的值已經(jīng)被修改,由于程序中沒有刻意對這一塊內(nèi)存進行修改,所以一開始懷疑是不是其他線程改寫的,當(dāng)把其他線程都禁掉,在單線程的情況下跑,還是存在這個問題.由于這邊是基類的最后一個變量,分析基類和派生類的代碼后,大致定位在這里:
問題可能出現(xiàn)在最后一行的數(shù)組,當(dāng)索引為負數(shù)才可能出現(xiàn)向前面內(nèi)存寫入的情況,而且多處地方給數(shù)組內(nèi)部賦值為 -1 ,和錯誤相符合,但是在所有地方都加了判斷和保護,打印出來也沒有異常,而且
進一步定位是在這里的 for 循環(huán)出了問題,執(zhí)行完 for 循環(huán),值發(fā)生了變化,剛開始以為是最后一次產(chǎn)生了問題,但是單步調(diào)試下,在 124 次,關(guān)注值發(fā)生了改變。查看了這個數(shù)組中的值是一個結(jié)構(gòu)體,會不會問題出現(xiàn)在這個結(jié)構(gòu)體,最后發(fā)現(xiàn)原來是有人更新了這個結(jié)構(gòu)體卻沒有上傳導(dǎo)致,數(shù)據(jù)結(jié)構(gòu)發(fā)生了變化,這個問題還是值得謹記的。以后要避免這類問題,庫和頭文件的上傳和下載盡量使用腳本,不要手動拷貝。
總結(jié)
以上是生活随笔為你收集整理的gdb 调试 TuMediaService的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 获取内存使用率_Pytho
- 下一篇: 持续记函数