SylixOS内核打印调试方法
1.增加系统日志消息缓冲最大数量
在使用printk的时候,经常会碰到已经加了打印语句,但是终端上却并没有显示出来信息这种情况,原因是系统默认的缓冲大小有限,而打印信息又比较多,从而导致后面的打印信息覆盖了前面的信息,造成打印丢失。
解决方法是修改base中的LW_CFG_MAX_LOGMSGS这个宏,系统默认的值是20,其所在的文件路径为“libsylixos/SylixOS/config/system/system_cfg.h”,如下图所示:
2.printk输出定向到文件
本操作主要用于x86平台驱动调试,因为x86平台主板一般没有串口输出,printk的信息是输出到屏幕的,当有大量调试信息时,通过屏幕不能查看完整的调试信息,这时可以将printk的信息输出到文件中,然后查看,方法如下所示:
int log_init (void)
{
int fd;
int width;
fd_set fdset;
fd = open("/apps/log1.txt", O_RDWR | O_CREAT | O_TRUNC);
if (fd < 0) {
printf("open /apps/log1.txt fail\n");
return -1;
}
logFdGet(&width, &fdset);
FD_SET(fd, &fdset);
logFdSet(max(fd,width)+1, &fdset);
return 0;
}
只要在驱动初始化的时候调用上面函数,就可以将调试信息记录到log1.txt中。
2.printk输出输出到网络终端
a.telnet登录到系统;
b.输入files命令查看当前系统打开的文件描述符,如下图所示:
c.查看/dev/pty/xx.hst对应的fd,如上图中是12;
d.输入logfileadd 12;
e.在驱动中使用printk输出的信息就会同步输出到网络终端上;
转载于:https://blog.51cto.com/11080845/2162307
SylixOS内核打印调试方法相关推荐
- 关闭Linux内核打印信息方法
调试内核模块过程中,kmsg打印信息太多,通过修改/proc/sys/kernel/printk文件内容来控制. 一般通过 echo 0 > /proc/sys/kernel/printk关闭打 ...
- 【FFMPEG系列】之打印调试
1.打印调试方法 AVCodecContext *avctx 在创建解码上下文的时候,对其中的debug成员进行赋值,如: avctx->debug = FF_DEBUG_MMCO;另外 log ...
- Linux内核调试方法总结【转】
转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...
- 第3章 Linux内核调试手段之内核打印
开始 前面说的话 在我写代码的生涯里,我看到过很多大神炫耀自己的调试手段,也看到很多大神写过非常厉害的代码,我认为,相比于写代码,调试更加重要,而那些能在写代码的时候就加入了自己的调试信息的,就更加厉 ...
- Linux内核调试方法总结
[转]Linux内核调试方法总结 目录[-] 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG ...
- 我偶尔会用到的调试方法 | Linux 内核
文章转自我朋友的公众号,以下为内容正文 ==== 大家好,我是你们的工具人老吴. 今天,和大家分享一下几个 Linux 内核的调试小技巧. 当你遇到一个 bug,你调试了 1 年半载都解决不了,这其实 ...
- 说说几个我偶尔会用到的调试方法 | Linux 内核
大家好,我是你们的工具人老吴. 今天,和大家分享一下几个 Linux 内核的调试小技巧. 当你遇到一个 bug,你调试了 1 年半载都解决不了,这其实一件好事. 因为它会时刻提醒你平时写代码时要谨慎. ...
- Linux内核调试方法【转】
转自:http://www.cnblogs.com/shineshqw/articles/2359114.html kdb:只能在汇编代码级进行调试: 优点是不需要两台机器进行调试. gdb:在调试模 ...
- linux kernel内核、驱动日志调试方法(一)
本文是对网络资料进行总结归纳,抄录其他博客资料,如有侵权,请告知,进行删除 一:通过打印调试printk printk是打印内核消息的函数,printk通过附加不同日志级别(loglevel)或者说消 ...
最新文章
- 编译vim-8.2并配置jedi-vim插件
- 我的醉驾拘留15日记----第二日凌晨 午夜惊梦
- 京东自动评论脚本_京东时光机python脚本 自动完成任务
- LINUX 内存使用情况
- 博弈——Nim博弈(hdu2176,1850,1851,1907,1849)
- 【Node】—nodemon的简单使用
- 资管运营BAND原创|那些年,资管运营业务交互中的酸甜苦辣
- 电阻电容封装买大了怎么办呢
- Windows中JetBrains mono字体安装方法
- Foobar2000播放软件的玄学
- JAVA/JSP小区物业管理系统
- pg数据库的基本操作
- 【数竞笔记2】—— 常见积分方法
- easyui datebox控件点击今天按钮不触发onSelect事件的解决方法
- 惠普笔记本电脑重装系统后找不到引导设备
- Android reckon 控制项目打包版本
- 机器学习中向量函数的求导问题
- 如何判断一个程序没有响应
- python+pyecharts画地图
- H2O机器学习平台容器化部署——基于Docker
热门文章
- 梅宏院士:操作系统变迁有20年周期律,泛在计算是一片新蓝海
- ​​《自然》2020年十大科学发现出炉:病毒,冷冻电镜与快速射电暴
- 智源研究院首席科学家刘嘉:认知神经的未来发展规划是什么?
- 从全球最赚钱的20家公司,我们可以发现什么?
- 一张图看懂微软人工智能
- 微软大神“玩”出新花样,求平均值代码还能这样写?
- 在相同的后端上重新设计前端是什么效果? | 每日趣闻
- CPU 深夜狂飙,一帮大佬都傻眼了......
- ant-design-pro Login 中的 UserName 和 Password 的验证规则 rules
- 前端项目课程7 banner设计注意事项