码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C语言、Makefile和shell中添加打印调试信息(详细)总结及实例


    目录

      • 一、简介
      • 二、打印信息
        • 2.1 C语言printf
        • 2.2 内核中printk方式:
        • 2.3 uboot下
        • 2.4 Makefile下
        • 2.5 shell下
      • 三、其他相关链接

    一、简介

    本文主要总结了在C语言、Makefile和shell中添加打印调试信息的方式,通过实例方便读者进行理解。

    二、打印信息

    2.1 C语言printf

    1、直接方式:

    printf("this is test\n");
    
    • 1

    2、内嵌常量打印

    printf("["__FILE__"][Line: %d][%s]: error happened!\n", __LINE__, __func__);
    
    • 1
    其中,__FILE__, __LINE__, __func__都是C语言的预定义符号,他们都在头文件"stdio.h"中。
    __FILE__: 当前源文件名,表示为字符串常量;
    __LINE__: 当前行号,表示为十进制整型常量;
    __func__: 当前函数名,表示为字符串常量。
    
    • 1
    • 2
    • 3
    • 4

    2.2 内核中printk方式:

    1、直接方式:

    printk("Reboot failed  ---System halted\n");
    
    • 1

    2、内嵌打印等级打印

    printk(KERN_INFO "Chassis warnings not supported.\n");
    printk(KERN_WARNING "warning: skipping physical page 0\n");
    
    • 1
    • 2

    3、内核中有不同的打印等级:

    // include/linux/kern_levels.h
    
    #define KERN_SOH    "\001"      /* ASCII Start Of Header */
    #define KERN_SOH_ASCII  '\001'
    
    #define KERN_EMERG  KERN_SOH "0"    /* system is unusable */
    #define KERN_ALERT  KERN_SOH "1"    /* action must be taken immediately */
    #define KERN_CRIT   KERN_SOH "2"    /* critical conditions */
    #define KERN_ERR    KERN_SOH "3"    /* error conditions */
    #define KERN_WARNING    KERN_SOH "4"    /* warning conditions */
    #define KERN_NOTICE KERN_SOH "5"    /* normal but significant condition */
    #define KERN_INFO   KERN_SOH "6"    /* informational */
    #define KERN_DEBUG  KERN_SOH "7"    /* debug-level messages */
    #define KERN_DEFAULT    KERN_SOH "d"    /* the default kernel loglevel */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4、改变打印等级

    cat /proc/sys/kernel/printk
    7 4 1 7
    //“7 4 1 7” 分别对应console_loglevel、default_message_loglevel、minimum_c onsole_loglevel、default_console_loglevel,意味着只有优先级高于KERN_DEBUG(7)的打印消息才能输出到终端
    
    echo 8 4 1 7 > /proc/sys/kernel/printk或者在grub引导参数追加console_loglevel=7或者loglevel=7(不通系统和内核引导参数不一样)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3 uboot下

    pr_debug("can't get tracing/printk_formats");
    pr_warning("printk format with empty entry");
    printf或者printf_s都是可以的,因为uboot下基本上是c语言写的;
    
    • 1
    • 2
    • 3

    2.4 Makefile下

    1、直接添加方式

    $(warning "this is test========================")
    $(info $(KBUILD_CFLAGS))
    $(error $(KBUILD_CFLAGS))
    
    • 1
    • 2
    • 3

    2、使用echo命令打印

    test:
    	@echo $(KBUILD_CFLAGS)
    //执行make test 即可打印echo内容
    
    • 1
    • 2
    • 3

    2.5 shell下

    //直接使用echo
    echo $(KBUILD_CFLAGS)
    echo "this is test---------------\r\n"
    //打印内容显示红色
    echo -e "\033[1;31m  this is test--------------- \033[0m"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、其他相关链接

    1、Makefile语法总结

    2、gdb调试常见命令总结

  • 相关阅读:
    CSAPP Lab08——Proxy Lab完成思路
    设计模式22——备忘录模式
    好像知道的人不多?Spring容器关闭执行销毁方法有几种,看完MQ源码我才知道SmartLifecycle最快
    米家、homekit、智汀更看好哪一个?看完你就明白了
    关于GitHub Desktop中的“Open in Git Bash”无法使用的问题
    ppo-clip的本质以及它为什么是另一种ppo-KL-penalty
    eNSP关于OSPF的综合实验
    HTTP 消息头
    win7 资源管理器打开ftp显示乱码
    沉睡者IT - 抖音中视频计划赚钱项目初级教程
  • 原文地址:https://blog.csdn.net/Luckiers/article/details/126436049
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号