Linux中printk和strace命令调试的一些技巧

dmesg                     @打印存在数组中的信息 
console=ttySAC0    @print to console 
console=tty1           @print to  lcd


打印方法一:

#define DBG_PRINTK printk      //打印
#define DBG_PRINTK(...)       //不打印

DBG_PRINTK("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
printk("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);


打印方法二:
msg_log_level < console_loglevel (默认是7)
printk(KERN_DEBUG"%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
打印级别为7,不会打印,所以扩大这个取值范围。动态修改打印级别
cat /proc/sys/kernel/printk
7       4       1       7
modify :
echo "8 4 1 7" >  /proc/sys/kernel/printk


打印三:debug=10
去掉所以内核调试信息,设置console_loglevel为0,可以在bootargs中设置
set bootargs loglevel=0 console=ttySAC0,115200 root=/dev/mtdblock3 

set bootargs debug console=ttySAC0,115200 root=/dev/mtdblock3 


应用程序调试:源码下载地址:点击这里!

strace调试:
tar -xjvf 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 && cp strace /work/nfs_root/      /*编译并把strace 放到开发板的bin目录下 */

strace -o log.txt ./test on        /* ./test on就是我们需要跟踪的命令,后面可以跟任意的命令 */

就会生成一些系统调用信息放到log.txt中。

你可能感兴趣的:(Linux中printk和strace命令调试的一些技巧)