調試嵌入式系統,比如手機,平板電腦。遇到bug要定位代碼的位置。一般有下面的方法。
1,通過命令行參數將控制檯重定性到某個串口,PC的串口連接到手機的UART串口,打開超級終端或者用secure_CRT工具,設置比特率,將手機的log輸出到securecrt,從log大概判斷到代碼出錯位置,再根據需要在代碼添加log進行精確定位bug的位置。
2,如果手機沒有串口,可以通過USB的連接用ADB調試,adb shell 進人控制檯,用dmesg命令輸出log。
3,TRACE32調試,手機出問題後,通過jtag接口連接trace32,查看寄存器或者內存,變量的值,進行定位出錯位置。
4,如果沒有trace32和串口,可以通過RAMDUMP模塊,當手機crash的時候,將手機進入ramdump模式,將現在信息保存到EMMC或者T卡,然後通過PC將ramdump取出來分析。一般是通過設置ramdump的使能開關爲開,當手機出問題進人panic的時候就進入ramdump模式。或者子系統出問題的時候通過fatal error中斷觸發panic,然後進入ramdump模式。通過PC,把手機當U盤,將ramdump信息導出來。
5,如果通過dump手段將出問題的時候整個內存dump出來,可以通過打開trace32的模擬器,將dump出來的內存鏡像重新加載進去trace32,查看出問題的現場狀態進行定位bug的位置。當然要有和鏡像對應的符號表。
6,以上手段都沒有,可以通過點燈的方法。