我正在尝试向 Linux task_struct
添加一些东西。
在这个区域中,我从用户那里复制一个字符串并尝试将其存储在我的结构中。
我尝试通过添加将打印复制的字符串的printk
来调试我的代码。
这是代码的调试部分:
newTODO->TODO_description=(char*)(kmalloc(in_description_size+1,0));
if( newTODO->TODO_description){
kfree(newTODO);
return -1;
}
res=copy_from_user(newTODO->TODO_description, in_TODO_description, in_description_size);
if (res) // error copying from user space, 1 or more char werent copied.
{
printk(KERN_ALERT "function: create element failed to copy from usern");
return -EFAULT;
}
newTODO->TODO_description[in_description_size]='o';
printk(KERN_ALERT "the copied string is: %s n",newTODO->TODO_description);
对我来说必须重要的印刷品是
printk(KERN_ALERT "the copied string is: %s n",newTODO->TODO_description);
会起作用吗?
要了解 printk:
每当调用 printk 时,我将从终端运行我的测试文件时,它会将输出直接打印到工作终端?
printk
函数将在内核消息缓冲区中附加消息,但除非您给出命令,否则此缓冲区的包含不会显示在终端上。
正如 Ilya Matveychikov 所说,您可以使用dmesg
命令转储内核消息缓冲区。
或使用以下命令获取实时内核消息观察。
echo 8 > /proc/sys/kernel/printk
tail -f /var/log/kern.log &
或
cat /proc/kmsg &
(安卓环境(