TQ2440 使用strace工具跟踪错误
TQ2440 使用strace工具跟踪错误
===========================
一. 工具包:
# strace-4.5.15.tar.bz2 # strace-fix-arm-bad-syscall.patch #补丁文件
二. 安装:
# tar jxvf strace-4.5.15.tar.bz2 ##解压
# cd strace-4.5.15 # patch -p1 < ../strace-fix-arm-bad-syscall.patch ##打补丁
# ./configure --host=arm-linux CC=arm-linux-gcc #配置
# make #安装
PS: 打补丁中"-p1"表示补丁文件去除第1个斜杠前的内容(下面红色部分),安装完后出生成一个strace执行文件
strace-fix-arm-bad-syscall.patch:内容如下
--- strace-4.5.12-orig/syscall.c 2005-06-08 21:45:28.000000000 +0100 +++ strace-4.5.12/syscall.c 2005-10-25 19:26:39.000000000 +0100 @@ -1013,6 +1013,15 @@ struct tcb *tcp; /* * Note: we only deal with only 32-bit CPUs here. */ + + if (!(tcp->flags & TCB_INSYSCALL) && + (tcp->flags & TCB_WAITEXECVE)) { + /* caught a fake syscall from the execve's exit */ + tcp->flags &= ~TCB_WAITEXECVE; + return 0; + } + + if (regs.ARM_cpsr & 0x20) { /* * Get the Thumb-mode system call number
三.使用
1. 使用
# cp strace /opt/share ##拷贝执行文件到开发板共享目录 /opt/share
# strace -o log.txt ./firstdrvtest on ##如果这了命令为父命令,红色部分就为这条命令的子命令, 子命令执行后的信息会存放到log.txt文件中
# vi log.txt ##查看信息,如果开发板不方便看,可拷贝到pc上查看
四. 以重新安装busybox为例,使用strace
0. 查看busybox版本
# busybox
1. 解压进入目录
# tar xjf busybox-1.20.0.tar.bz2 # cd busybox-1.20.0/
2. 配置并编译, 编译选项加上交叉编译前缀 arm-linux-
# make menuconfig ##配置
-> Busybox Configuration
-> Build Options
-> (arm-linux-)Cross Compiler prefix
# make ##编译
3.发现错误并解决
错误a: ionice.c文件错误,去除配置选项
Busybox Configuration -> Miscellaneous Utilities -> [ ] ionice
错误b:

去除配置选项:
Busybox Configuration -> Miscellaneous Utilities -> [ ] nandwrite
错误c:
miscutils/ubi_tools.c:67:26: mtd/ubi-user.h: No such file or directory
去除ubi相关的配置选项: ->Busybox Configuration -> Miscellaneous Utilities

3.编译成功后,拷贝到开发板文件系统
// 此处操作是开发板网络启动方式启动,busybox拷贝到网络文件上去 # cd /opt/share/sys_fs //网络文件系统启动目录 # cp bin/busybox bin/busybox_1.7.0 //备份之前1.7.0的busybox # cp /busybox-1.20.0/busybox bin/busybox //busybox内容拷贝
4. 用了1.20.0 busybox之后,rmmod first_drv就会出现问题
# insmod first_drv.ko # rmmod first_drv rmmod: chdir(/bin/modules): No such file or directory ##报错 #
5. strace跟踪并查看log.txt文件
# strace -o log.txt rmmod first_drv
# vi log.txt
log.txt

6. 创建要求的目录,再执行

7. 查看log.txt解决问题并继续操作

8. 以上跟踪其实在执行的时候就提示,不过strace能看到更多的代码
----------------------- The end!!
浙公网安备 33010602011771号