砖7 解bug时用到的一些小工具
2014-11-24 19:16
267 查看
整理文档
整理一下最近做的东西中,用到一些小工具。1. 配置虚拟机串口
1.1 虚拟机添加串口
在虚拟机设置里添加串口,选择serial port type,选择output to file,这里我选的是在物理机上/vmware/目录下serialportinfo文件来保存串口信息;1.2 在测试机端配置
不太记得了,应该需要再在测试机配置,suse操作系统,打开/boot/grub/menu.lst文件,添加console=tty0 console=ttyS0,9600。1.3 测试是否配置成功
首先,开机启动信息是会保存在串口文件中的。2. 物理机配置串口调试信息
物理机是配置minicom来查看调试信息。Suse系统,当时minicom未配置成功,记录也不够仔细,以后这样的情况应该及时总结。
Minicom的一些命令:
(1) minicom –s:进入minicom的配置界面
(2) ctrl + A + Z:显示出所有命令;
(3) ctrl + A + L: 保存内容到指定的文件夹下;
(4) dmesg | grep ttyS*,如果看不到任何信息,则串口没有打开。
2.1 测试机端的配置
在测试机上,suse是在/boot/grub/menu.lst文件中添加,在指定的title添加console=ttyS0 console=ttyS0,9600;
2.2 显示机端的配置
$minicom –s /*配置minicom */serial port配置
输出文件配置,输出到屏幕同时输出到指定文件
2.3 测试是否配置成功
echo test > /dev/ttyS0,测试看是否向端口发送数据成功。查看串口设备:dmesg | grep ttyS*,如果看不到任何信息,则串口没有打开;如果有信息,会显示console[ tty0 ] enabled。
注:这里不需要编写串口程序来调试。
3. 修改printk级别
(1) 查看printk级别$ cat /proc/sys/kernel/printk,会显示出4个数字,分别表示当前控制台日志级别、未明确指定日志级别的默认消息日志级别、最小(最高)允许设置的控制台日志级别、引导时默认的日志级别。
(2) 希望打印出所以信息,修改printk级别
$echo 8 >/proc/sys/kernel/printk,再执行cat,第一个数字是8,表示当前控制台日志级别是8,任何小于8(即级别高的)信息都会输出并显示在终端上。
注:快速重启命令,echo b >/proc/sysrq-trigger
4. /proc/sysrq-trigger说明
(1) 快速重启:$ echo b > /proc/sysrq-trigger
(2) 系统崩溃,suse默认启动kdump,可以测试crashkdump,崩溃后会生成崩溃文件,一般保存在/var/crash/目录下:
$ echo s > /proc/sysrq-trigger
(3) 立即关闭计算机:
$ echo o > /proc/sysrq-trigger
(4) 导出线程状态信息:
$ echo t > /proc/sysrq-trigger
备注:显示当前堆栈信息,cat/proc/pid_num/stack。
5. 手动释放缓存
作者主要用在测试时,需要测试一些特殊情况下,/proc/sys/vm/drop_caches。(1) 清空pagecache缓存;
$ echo 1 > /proc/sys/vm/drop_caches
(2) 清空inode和dentrycache,这里的cache是对应的hashtable缓存;
$ echo 2 > /proc/sys/vm/drop_caches
(3) 清空pagecache、inode和dentrycache;
$ echo 3 > /proc/sys/vm/drop_caches
(4) 说多缓存,简单写一下free命令:
Free是显示当前内存的使用情况,-m是以M字节来显示内存情况;
6. df 和 du命令
df是列出当前主机上的文件系统及其使用情况;df –T: 列出当前文件系统类型
7. 测试时的log信息
(1) 直接加printk,可以显示在屏幕上;加printk的常用方式,
打印出函数名和行号:printk("[%s][%d]\n", __func__, __LINE__);
%pF可打印函数指针的函数名和偏移地址,%pf只打印函数指针的函数名,不打印偏移地址;
int %d or %x
unsignedint %u or %x
long %ld or %lx
unsigned long %lu or %lx
long long %lld or %llx
unsigned longlong %llu or %llx
size_t %zu or %zx
ssize_t %zd or %zx
(2) 加dprintk,需要打开rpc开关;
server端:rpcdebug -m nfsd -s all
client端:rpcdebug -m nfs -s all
(3) dump_stack,可以打印当前内核调用堆栈;
在函数中,添加dump_stack();
需要包含头文件,#include <asm/ptrace.h>
8. Jiffies
全局变量jiffies用来记录自系统启动以来产生的节拍的总数。一秒内时钟中断的次数等于Hz,所以jiffies一秒内增加的值也就是Hz。jiffies类型为无符号长整型(unsignedlong),其他任何类型存放它都不正确。
9. Vim下的多行注释和多行取消注释
多行注释:1. 进入命令行模式,按ctrl + v进入 visualblock模式,然后按j, 或者k选中多行,把需要注释的行标记起来
2. 按大写字母I,再插入注释符,例如//
3. 按esc键就会全部注释了
取消多行注释:
1. 进入命令行模式,按ctrl + v进入 visualblock模式,按字母l横向选中列的个数,例如 // 需要选中2列
2. 按字母j,或者k选中注释符号
3. 按d键就可全部取消注释
相关文章推荐
- 工作中用到的一些框架、工具、概念等
- 【转载】分享一些FLASH开发时用到的工具~
- 整理了一些在实际Java开发中可能会用到的工具和资料
- 独立开发Unity3D需要用到的一些其他工具
- 用到的一些工具
- 开发j2ee时经常用到的工具和一些框架
- js用到的一些工具方法
- 产品经理用到的一些小工具分享
- aapt这个烂工具的一些乱七八糟的bug
- 一些好用到爆炸的日常产品设计工具
- SharePoint调试可能用到的一些工具
- 一些现在或者以后会用到的工具
- 总结下目前维护团队中用到的一些技术和工具
- 配置一些项目中用到的小工具(一)----------CommonUtils
- 一些科研中经常用到的工具
- 项目中用到的一些工具,之一(NUnit)
- 工作中用到的一些能提高效率的工具
- How does TestFlight do it?(分发测试版本可以用到的一些工具和代码)
- Web开发中可以用到的一些在线计算工具(一)
- 【转】做PPT需要用到的一些小工具