转自: http://blog.csdn.net/zhenwenxian/article/list/2
调试嵌入式系统,比如手机,平板电脑。遇到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的位置。当然要有和镜像对应的符号表。