免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2662 | 回复: 8
打印 上一主题 下一主题

[其他] 如何用printk显示内核信息? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-12-14 19:54 |只看该作者 |倒序浏览
我在内核中使用printk,但是无法在终端打印信息。将printk等级设置为最高也没用,在字符模式下也没用。如果查看日志文件,里面的信息太多,完全没价值。
我使用的代码为:
printk("<0>c,"),或为printk("<0>""c,")
日志文件中会把<0>也打印出来,所以我在想是不是级别设置的写法不对,但是书上就这么写的,我也不清楚

论坛徽章:
0
2 [报告]
发表于 2013-12-16 09:49 |只看该作者
dmesg有信息输出么?
你说的终端是哪个?不是伪终端吧?
内核参数console有设置位其他么?

论坛徽章:
0
3 [报告]
发表于 2013-12-16 12:41 |只看该作者
使用dmesg的话,模块里的信息能查到,但是如果是内核中的printk,有时候会写进去,有时候则不会(使用dmesg查找)
我所用的终端包括图形模式和文本模式

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2013-12-17 11:48 |只看该作者
本帖最后由 arm-linux-gcc 于 2013-12-17 12:42 编辑

printk只会输出到系统控制台吧,cmdline中console=ttyS0这样的东西

最好不好在printk中直接用<0>来表示等级,而应该使用宏KERN_EMERG,因为在较新版本的内核中
KERN_EMERG的定义不再是<0>了,
而是#define KERN_EMERG        KERN_SOH "0"          #define KERN_SOH        "\001"

评分

参与人数 1可用积分 +2 收起 理由
Godbach + 2 感谢分享

查看全部评分

论坛徽章:
0
5 [报告]
发表于 2013-12-18 12:45 |只看该作者
使用KERN_EMERG也没用,据说是虚拟机环境中不行

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2013-12-18 13:03 |只看该作者
在系统控制台中才能看见,你开的伪终端对应的是/dev/pts/n(n是一个数字),这是看不到的

要看printk是需要系统控制台的,需要使用cmdline中“console=”这项设置对应的终端

回复 5# stuman


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
7 [报告]
发表于 2013-12-18 15:46 |只看该作者
char str[] = "this is my string";
        struct tty_struct *tty = current->signal->tty;

        if (tty && tty->driver && tty->driver->write)
                tty->driver->write(tty, str, sizeof(str));


不过,很显然你的需求应该这样: 1) printk时加上个tag,例如叫fuckgcd; 2) dmesg |grep fuckgcd

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
8 [报告]
发表于 2013-12-19 09:43 |只看该作者
帅绝人寰 发表于 2013-12-18 15:46
char str[] = "this is my string";
        struct tty_struct *tty = current->signal->tty;

  建议增加fuckgfw。

论坛徽章:
0
9 [报告]
发表于 2013-12-20 15:33 |只看该作者
如果看不到的话,可以到/var/log/messages这个里面都有,因为系统默认不是都输出的,需要配置一下。你要是调试内核的或者写驱动的话可以到/var/log/message里面看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP