问题标签 [dmesg]
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++ - 陷阱无效操作码 rip rsp
对于我们的一个应用程序,我们在 /var/log/messages 中看到了下面提到的几条消息:
我无法确定这些输出的含义以及我们如何跟踪导致问题的函数/代码。此外,“陷阱无效操作码”和“一般保护”是什么意思?
android - logcat 与 dmesg 有什么区别?
logcat 使用什么日志源(默认设置:adb shell logcat
)。dmesg 日志是否包含在 logcat 的输出中?如果不是,dmesg 日志和 logcat 日志有什么区别?
logging - 如何将 dmesg 时间戳转换为自定义日期格式?
我试图了解dmesg
时间戳,发现很难将其转换为 java 日期/自定义日期格式。
示例 dmesg 日志:
那么如何转换14614.647880
为标准日期呢?
bash - dmesg 将时间戳转换为人类格式
我有以下 dmesg 示例:
我想将行中的所有时间戳转换为人类格式("%d/%m/%Y %H:%M:%S"
)
注意:这个系统没有也dmesg -T
没有安装 perl。我更喜欢带有 sed 或 awk 的解决方案,但 python 也是一种选择。
我找到了一些解决这个问题的方法,但没有一个能完全满足我的需求。我也不知道如何根据我的需要修改它。
或者
这里还有一个 python 脚本。但是输出一些我对它的理解为零的错误。
谢谢!
linux - 让 dmesg 打印人类可读的时间
我希望 dmesg 在不传递 -T 参数的情况下打印人类可读的日期时间。有没有办法在不设置别名的情况下做到这一点?也许在配置文件中?
dmesg 输出:
在这种情况下,我希望 dmesg 打印:
c - 内核模块加载导致错误
我是内核模块开发的新手,并决定今天编写我的第一个内核模块。
我的模块应该接收 2 个数字作为输入,用空格分隔并将这些数字加在一起。
内核模块通过名为 calc (/proc/calc) 的 proc 条目进行通信,因此从文件中读取将返回输出,写入该文件将提供新输入(2 个数字由空格分隔)
加载模块(insmod)时,我的 shell 卡住了,当中断它并查看 dmesg 时,我看到了内核 BUG 行, 这是跟踪。
我不确定这是否是我的代码中的错误,还是 linux 内核中的实际错误,并且很想了解我做错了什么以及如何使用给定的 dmesg 日志开始调试我的模块。
我的makefile是非常标准的,
非常感谢提前!
编辑:我使用的是 ubuntu 16.04.02,版本 4.10.0-28,非常标准。
linux - printk 消息未显示在 dmesg 日志中
我正在开发一个有趣的简单驱动程序,并且我正在尝试使用printk
消息对其进行调试。似乎dmesg
不显示最后printk
一条消息,让它显示最后一条消息的唯一方法是做 another printk
,这反过来也被dmesg
.
一些澄清示例:在我的模块的 init 函数中,我打印以下语句:
在insmod
启动后第一次 ing 后,我看到一条带有 的“受污染的内核”消息dmesg
,但是我看不到我打印的消息。
然后,我运行以下命令:
它调用我open
打印的函数:
然后调用我read
打印的函数:
然后去睡觉。运行后dmesg
(当 read 函数休眠时),我突然可以看到我的模块初始化消息,也可以看到“cat opens”消息,但是“cat reading”消息不见了。
使用 ctrl+c 终止 cat 会导致两次打印:“sleep interrupted”,然后是“cat release”。运行dmesg
显示“睡眠中断”消息,但缺少“猫释放”消息,依此类推。
有谁知道问题可能是什么?
logging - 如何禁用特定设备/驱动程序的登录 dmesg (/proc/kmsg)?
我正在使用 TechnoTrend TT-connect S2-3600,它以向 dmesg(分别为 /proc/kmsg)发送垃圾邮件而闻名,但出现以下错误:
由于 I2C 错误不会得到修复,我能做些什么来避免 dmesg 的垃圾邮件?特定设备的 /dev/null 消息是否有任何选项?
linux - Linux 内核网络 ubuntu 调试消息未随 printk/pr_debug 显示
我已经在 Ubuntu 上重新编译了 Linux 内核,现在升级到 4.17.6。我需要修改 TCP/IP 堆栈部分,特别是拥塞控制算法之一(例如 Vegas)。成功重新编译到4.17.6后,我尝试修改代码,只重新编译相关模块但在dmesg上看不到任何消息。我按照以下步骤测试 printk 和 pr_debug 是否有效,但没有一个有效。
我在修改后的文件上添加了#define DEBUG,然后将以下行添加到所需的函数 net/ipv4/ip_input.c 和 net/ipv4/ip_output.c 中:
我运行了以下命令:
重新启动后,我通过执行 echo 8 | 修改了 printk 文件以显示所有消息级别。sudo dd of=/proc/sys/kernel/printk. 然后尝试从 VM ping 到 VM 并尝试打开网页。然后,尝试通过运行 dmesg | 查看消息 grep 测试:
但是没有显示任何消息,问题出在哪里?
linux - 如果设备是 ext4,如何将块号映射到来自 vm.block_dump=1 的 dmesg 输出的文件名?
tl; dr:我想查看/获取 dmesg 上报告的块号所属的文件名,vm.block_dump=1
例如 dmesg:bash(13515): READ block 5434824 on xvda3 (32 sectors)
当例如。sudo sysctl -w vm.block_dump=1
或例如。echo '1' | sudo tee /proc/sys/vm/block_dump
然后“Linux 报告发生的所有磁盘读取和写入操作,以及对文件进行的所有块污染。[...] block_dump 的输出被写入内核输出,并且可以使用“dmesg”检索它。当你使用 block_dump 并且您的内核日志记录级别还包括内核调试消息,您可能希望关闭 klogd,否则将记录 block_dump 的输出,导致磁盘活动不正常。” (从这里引用)
“块脏污”不是问题,例如。
我可以看到它的文件名是这样的:
问题在于“Linux 报告发生的所有磁盘读写操作”(引用上面的内容),因为它们是以块的形式报告的,例如。
可以在此处查看负责显示此类消息的内核代码: https ://elixir.bootlin.com/linux/v4.18.5/source/block/blk-core.c#L2542
这些块都不会产生任何 inode 编号,使用以下方法:
我应该得到一个 inode 编号,而不是<block not found>
上面的,然后我可以将其与之前的 echo 一起使用来查看文件名。
我尝试了什么:以防块号是扇区大小(512字节)的倍数并且我知道ext4块大小是4096字节(sudo blockdev --getbsz /dev/xvda
),我也尝试过(使用乘法的结果):11037768*2, 11037768*4和 11037768*8 结果相同:<block not found>
我在这里想念什么?这些块是指向目录条目还是不是文件名的东西?即便如此,debugfs 不应该仍然产生一个 inode 号吗?
有没有更好的方法来获取文件名?
编辑:(icheck
内部debugfs
)期望的块号是类似于 debugfsstat
在下报告的数字EXTENTS
,例如,范围内的任何数字2172716-2172721
如下所示:
其他方式:
现在问题仍然存在:这些设备块号(在 dmesg 中为 xvda3 报告的块号)与这些物理偏移量有何关系?
EDIT2:我刚刚确认这些物理偏移编号与块设备编号相同(只是,显然与 dmesg 上报告的不同);下面显示了上述文件的最后一个块,我可以确认它与查看文件时相同vim
:
我已经在 Qubes OS R4.0 Fedora 28 AppVM 内的 4.18.5 内核下对此进行了测试。.config
(如有必要,我可以使用自定义 /patches 重新编译自定义内核- 欢迎提出建议)