JZ2440应用调试之strace

1.编译strace

JZ2440应用调试之strace_第1张图片
进入strace-4.5.15目录下要把strace-4.5.15去掉,红色框框所以我们输入-p1,意思就是不要第一个目录

[email protected]:/work/tools/strace-4.5.15$ patch -p1 < …/strace-fix-arm-bad-syscall.patch

在这里插入图片描述
在这里插入图片描述
JZ2440应用调试之strace_第2张图片
JZ2440应用调试之strace_第3张图片

2.使用新版本的busybox使用strace调试

因为用新版的的busybox装载我们的led驱动会有一点问题

(使用新的busyboix编译,因为有些问题我们用strace调试)

这里下的1.20版本
JZ2440应用调试之strace_第4张图片
make 有错误直接把对应的选项去掉
在这里插入图片描述
备份再把新的文件拷贝过来
JZ2440应用调试之strace_第5张图片
卸载驱动的时候就有问题报错了
在这里插入图片描述
没有这个目录给你建一个就好了
我们用strace命令来跟踪一下
在这里插入图片描述

vi log.txt
JZ2440应用调试之strace_第6张图片
在这里插入图片描述创建之后又有新的错误

再用strace来看一下:

JZ2440应用调试之strace_第7张图片
JZ2440应用调试之strace_第8张图片
再来创建一下文件就成功了!

3.strace原理

它的原理strace是一个父进程,他创建一个子进程就是rmmod first_drv
JZ2440应用调试之strace_第9张图片
swi指令会导致swi系统异常,进入内核态处理sys_open
…write read
vector_swi先判断一下子进程有没有被父进程跟踪
JZ2440应用调试之strace_第10张图片
如果被跟踪调用syscall_trace,发信号给父进程strace,父进程处理完后(记录)让子进程继续运行
JZ2440应用调试之strace_第11张图片

你可能感兴趣的:(JZ2440)