之前我讲了怎么用eclipse调试android的framework代码以及用gdb server调试native代码,但是由于gdb无法调试多线程代码,所以用起来还是很不方便。今天我来讲讲怎么用trace32调试kernel.
首先讲讲硬件连接,必须保证你的trace32是连接到arm11的JTAG口上,其他连接不细说了。
打开trace32的命令窗口,并对cpu设置,如下图所示:
进入设置界面,设置如下:
然后依次输入命令“cd Z:/out/target/product/msm7627_surf/obj/KERNEL_OBJ”, "d.load.elf vmlinux /nocode",如下图所示:
之后打开符号表,查找你要debug的函数,如下图所示:
设置好断点之后,还需要进行如下设置,如图:
接着,点击go,即可进入断点,如下图:
可以看到,已经进入断点,但是一堆的汇编,怎么显示对应的c code呢?用“symbol.sourcepath.setrecursedir z:/kernel”添加路径, 如图:
最后,我们看到了正确的code,如下: