调试大杂烩
来源:互联网 发布:java int到string 编辑:程序博客网 时间:2024/06/05 06:02
1.1 调整内核printk的打印级别
有时调试内核模块,打印信息太多了,可以通过修改/proc/sys/kernel/printk文件内容来控制。
默认设置是7 4 1 7
cat /proc/sys/kernel/printk7 4 1 7
该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。关于不同日志级别的更多信息,请查阅syslog(2)联机帮助。上面显示的4个数据分别对应:
控制台日志级别:优先级高于该值的消息将被打印至控制台默认的消息日志级别:将用该优先级来打印没有优先级的消息最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)默认的控制台日志级别:控制台日志级别的缺省值
数值越小,优先级越高
其实这四个值是在kernel/printk.c 中被定义的,如下:
int console_printk[4] = { DEFAULT_CONSOLE_LOGLEVEL, /* console_loglevel */ DEFAULT_MESSAGE_LOGLEVEL, /* default_message_loglevel */ MINIMUM_CONSOLE_LOGLEVEL, /* minimum_console_loglevel */ DEFAULT_CONSOLE_LOGLEVEL, /* default_console_loglevel */};
内核通过printk() 输出的信息具有日志级别,日志级别是通过在printk() 输出的字符串前加一个带尖括号的整数来控制的,如printk(“<6>Hello, world!\n”);。内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。
#define KERN_EMERG "<0>" /* systemis unusable */#define KERN_ALERT "<1>" /* actionmust be taken immediately */#define KERN_CRIT "<2>" /*critical conditions */#define KERN_ERR "<3>" /* errorconditions */#define KERN_WARNING "<4>" /* warning conditions */#define KERN_NOTICE "<5>" /* normalbut significant */#define KERN_INFO "<6>" /*informational */#define KERN_DEBUG "<7>" /*debug-level messages */
所以printk() 可以这样用:
printk(KERN_INFO"Hello, world!\n");
未指定日志级别的printk() 采用的默认级别是DEFAULT_MESSAGE_LOGLEVEL,这个宏在kernel/printk.c 中被定义为整数4,即对应KERN_WARNING。
如果要想在内核启动过程中打印少的信息,就可以根据自己的需要在kernel/printk.c中修改以上数值,重新编译即可!
/* printk's without a loglevel use this.. */#define DEFAULT_MESSAGE_LOGLEVEL 4 /* KERN_WARNING */
了解了上面的这些知识后,我们就应该知道如何手动控制printk打印了。
例如,我想屏蔽掉所有的内核printk打印,那么我只需要把第一个数值调到最小值1或者0。
# echo 1 4 1 7 > /proc/sys/kernel/printk
或者
# echo 0 4 0 7 > /proc/sys/kernel/printk
例如,我不想屏蔽内核printk打印,那么只需要把第一个数值调到8。
echo 8 > /proc/sys/kernel/printk
1.2 重挂载android系统
串口
$ mount -o remount,rw system
adb
adb remount
1.3 ubuntu挂载ntfs硬盘
1.3.1 ntfs-3g安装
$ sudo apt-get install ntfs-3g
1.3.2 创建mount点
$ mkdir /mnt/ntfs
1.3.3 mount NTFS分区
$ sudo fdisk -l | grep NTFS$ mount -t ntfs-3g /dev/sdb1 /mnt/ntfs
1.4 压缩、解压
1.4.1 tar
1.4.1.1 压缩
$ tar -cjvf file.tar.bz2 file
1.4.1.1 解压
$ tar -xvf file.tar #解压tar包$ tar -xzvf file.tar.gz #解压tar.gz$ tar -xjvf file.tar.bz2 #解压 tar.bz2$ tar -xvf file.tar -C ./ #解压tar包到当前目录
1.4.2 zip
1.4.2.1 压缩
$ zip -r file.zip file/*
1.4.2.1 解压
$ unzip file.zip$ unzip file.zip -d ./ #解压zip包到当前目录
1.5 命令截屏
$ screencap /storage/2FDED/screencap.png
1.6 远程复制
1.6.1 scp
复制本地文件xiaoke.pub到远程主机(192.168.1.201:trigtop)下的kkk文件夹中
$ scp -arf xiaoke.pub trigtop@192.168.1.201:kkk/
1.6.2 rsync
远程同步
$ rsync -avP xiaoke.pub trigtop@192.168.1.201:kkk/
本地同步
$ rsync -avP --exclude .git --exclude .repo /media/sdb/xiaoke/rtk1296/android/ /media/sdb/xiaoke/rtk1296-release/android/$ tar -cjvf rtk1296-release.tar.bz2 rtk1296-release
1.7 获取、设置android系统属性
1.7.1 命令行
$ getprop ro.product.brand$ setprop ro.product.brand realtek
1.7.2 代码
import android.os.SystemProperties;SystemProperties.get("ro.product.brand");SystemProperties.set("ro.product.brand", "realtek");
1.8 获取、设置settings属性
1.8.1 命令行
$ settings get system key$ settings get secure key$ settings get global key$ settings put system key value$ settings put secure key value$ settings put global key value
1.8.2 代码
import android.provider.Settings;String str = Settings.System.getString(this.context.getContentResolver(), Settings.System.KEY);String str = Settings.Secure.getString(this.context.getContentResolver(), Settings.Secure.KEY);String str = Settings.Global.getString(this.context.getContentResolver(), Settings.Global.KEY);Settings.System.putString(this.context.getContentResolver(), Settings.System.KEY, value);Settings.Secure.putString(this.context.getContentResolver(), Settings.Secure.KEY, value);Settings.Global.putString(this.context.getContentResolver(), Settings.Global.KEY, value);
1.9 dumpsys
$ dumpsys input$ dumpsys meminfo
- 调试大杂烩
- Windbg内核调试(大杂烩)
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩
- 大杂烩.
- 大杂烩
- unity-Ugui-伸缩缩菜单显示固定内容一一一一新手
- TCP协议与UDP协议的区别
- react native学习笔记20——常用API(2)AppState应用前后台、NetInfo网络状态
- notepad++连接linux问题
- immutable.js 意义何在,使用场景?
- 调试大杂烩
- Eclipse .classpath文件浅谈
- qt远程调试ARM板
- 进制·IP地址转换
- 最大公约数和最小公倍数的总结
- Java培训学习,需要掌握那些内容?
- Spring-MVC搭建
- [Java]System类的小使用
- 大数据WEB阶段(十八)数据库事务