问题标签 [printk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - printk进程信息
我有以下模块,我试图打印 PCB 信息。但是我无法弄清楚输出。它应该打印过程相关的数据。我很感激任何帮助。
修改pcb.c
生成文件
编辑:输出。通过使用 insmod 更新 Makefile,错误消失了。
linux - 如何在启用调试日志的情况下编译内核模块
我已经下载了 linux kernel source v4.2.0 并构建了它。现在我正在尝试编译一个驱动模块并在控制台上查看调试日志。
我正在通过以下命令编译模块:
还启用了所有内核调试日志,如下所示:
当我加载这个模块时,用 dmesg 看不到内核日志(具有日志级别)。如果我使用printk("Some message")打印消息,它将在控制台上打印,但如果我通过printk(KERN_INFO, "Some message")打印相同的消息,则不会在控制台上打印。编译模块时是否缺少任何配置?
c - printk 和 pr_info 的区别
printk
和之间的确切区别是什么pr_info
?在什么条件下,我应该选择一个而不是另一个?
linux - SSE 寄存器返回 SSE 禁用错误
我为内核级线程编写了以下命令:
生成文件如下:
使用 make 命令时出现此错误:
我已经尝试了所有可能的方法,但这个错误似乎并没有消失。该怎么办?
linux-kernel - 内核动态调试输出
我正在尝试查看dev_err()
在内核模块中使用函数编写的日志消息,我尝试过sudo dmesg -n 7
,但echo 8 > /proc/sys/kernel/printk
没有一个开始将dev_err
消息打印到dmesg
.
我还注意到内核源代码中的 dev_err 函数是空的:
包括/linux/device.h
我也尝试过echo -n 'module <module name> +p' > /sys/kernel/debug/dynamic_debug/control
(debugfs
已安装并dynamic_debug/control
存在),由于某种原因,当我cat
dynamic_debug/control
和grep
模块名称在那里我看不到它时,我认为这是主要问题,例如:
此命令不会添加include/net/bluetooth/hci_core.h
到/sys/kernel/debug/dynamic_debug/control
为什么?
(我使用的是 ubuntu 16.04.2 LTS,内核 4.8.0-36-generic)
如何将dev_err
日志消息打印到dmesg
?谢谢。
c - 奇怪的 printk 对 linux 堆栈大小测试的影响
我发现了这种奇怪的行为。我编写了以下代码来使内核崩溃,但奇怪的是它只有在 printk 未注释时才会崩溃,否则运行良好且没有错误/警告!!。
make -C /lib/modules/4.4.0-53-generic/build M=/home/naveenvc/work/ker/crash_stack modules make[1]: 进入目录'/usr/src/linux-headers-4.4.0 -53-generic' CC [M] /home/naveenvc/work/ker/crash_stack/crash_stack.o 构建模块,第 2 阶段。MODPOST 1 模块 CC /home/naveenvc/work/ker/crash_stack/crash_stack.mod.o LD [M] /home/naveenvc/work/ker/crash_stack/crash_stack.ko make[1]: 离开目录'/usr/src/linux-headers-4.4.0-53-generic'
make -C /lib/modules/4.4.0-53-generic/build M=/home/naveenvc/work/ker/crash_stack modules make[1]: 进入目录'/usr/src/linux-headers-4.4.0 -53-generic' CC [M] /home/naveenvc/work/ker/crash_stack/crash_stack.o > /home/naveenvc/work/ker/crash_stack/crash_stack.c:在函数'crash_stack_init'中:/home/naveenvc/ work/ker/crash_stack/crash_stack.c:14:1: 警告:8200 字节的帧大小大于 1024 字节 [-Wframe-larger-than=] } ^
构建模块,阶段 2. MODPOST 1 模块 CC
/home /naveenvc/work/ker/crash_stack/crash_stack.mod.o LD [M] /home/naveenvc/work/ker/crash_stack/crash_stack.ko make[1]: 离开目录'/usr/src/linux-headers-4.4 .0-53-通用'
这可能是什么原因造成的?
linux-kernel - 在 Linux 内核中将 u8 数组打印为十六进制
我正在尝试在我的自定义 Linux 内核模块中打印以下变量以进行调试:
该data
变量的最大长度为 128 字节,但我们可能不会全部使用它。长度变量决定了我们使用了多少data
变量。我想以data
十六进制格式打印变量的内容。我正在使用 for 循环这样做,但是,当我使用dmesg
. 我想这是因为printk
工作原理。我仍然可以在同一行打印内容,但使用%s
. 但是,我想以十六进制格式打印同一行中的所有字节。我怎样才能做到这一点?
c - 将 printf/printk 消息重定向到文件
我想将通过 printf/print 调用的消息复制到一个文件中,保持 printf/printk 的原始行为相同。环境包含多个正在运行的进程和调用的 printf/printk 函数调用。我想实现上述目标,尽可能减少对每个二进制文件的更改。
提前致谢 !!!
c - Linux 内核模块:printk 消息不在我期望的缓冲区日志中
这个问题与实验室/家庭作业有关。我们被要求学习如何加载和删除内核模块,然后修改已提供的内核模块中的 C 代码。我们必须定义一个结构,其中包含一些要插入到链表中的元素。然后我们必须通过 printk() 使用链表中的数据打印一些消息。
这是我的代码:
我可以毫无错误地编译代码,并且它似乎可以很好地加载和删除。我的问题是打印的报表。当我加载模块并使用 dmesg 检查日志缓冲区时,我可以看到所有 5 条消息(链表中的每个节点都有一条消息)。当我移除模块并检查日志缓冲区时,我只看到 4 条消息。此时不打印与链表中第 5 个节点关联的消息。如果我再次加载模块,然后检查日志缓冲区,那么第一条消息就是我删除模块时应该在日志中的消息。
当我有 5 个节点时,我只遇到过这个问题。如果我将循环更改为创建 10 个节点,所有消息都会按预期打印。6 个节点或 4 个节点也是如此。但是每次我创建 5 个节点时都会遇到这个问题。
这是我的输出:我的命令行输出截图
本作业的所有编辑和操作都在 Oracle VM VirtualBox 中完成,运行在 Windows 10 中。我正在修改的 Linux 内核和内核模块作为课程材料和教科书的一部分提供。
任何帮助是极大的赞赏!
c - 如何在printk中使用变量作为格式字符串?
我尝试使用命令 printk。
我可以在互联网上找到的所有示例都是通过将字符串直接放入 printk 中,如下所示:
但是,我尝试替换“Hello %s!” 使用这样的缓冲区:
事实证明我得到了错误
我们应该如何在 printk 中使用变量并使用日志级别 KERN_INFO?