0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux开发中如何同时输出调试信息到终端及文件

璟琰乀 来源:嵌入式大杂烩 作者:嵌入式大杂烩 2020-11-04 16:40 次阅读

Linux下的开发中,printf打印调试信息默认输出到标准输出 stdout (即屏幕/终端)中。我们也可以使用输出重定向技术输出到指定文件中,输出重定向即是把原本要输出到屏幕的信息写入到指定文件中。

比如:

但是有时候既要实时查看打印调试信息,又要把这些调试信息保存下来发给他人分析。

下面分享能达到这个需求的两种方法:

1、使用script工具

script工具是一个非常使用的工具,可以把输出到终端的信息记录下来。使用方法如:

(1)输入 script log.txt命令开始保存终端输出的信息 ,其中log.txt为需要写入的log文件,可随意命名。

(2)输入exit退出保存。

演示如下:

之前我只知道有script 这样一个工具,而且经常在Ubuntu上使用。奈何开发板里的系统没这个工具,所以很长的一段时间我都是等程序跑完后我手动从终端拷贝全部信息到文本中保存。。。

刚开始程序跑得不久,日志信息还不是很多,还可以接受。后面程序跑久了,日志信息越来越多,再这么手动拷贝实在受不了。

所以找了另外的方法:使用tee工具。

2、使用tee工具

tee工具用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。

存在缓存机制,每1024个字节将输出一次。若从管道接收输入数据,应该是缓冲区满,才将数据转存到指定的文件中。若文件内容不到1024个字节,则接收完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。

演示如下:

可见,使用tee工具输入到文本里的内容比script工具输入到文本里的内容还要干净,就是程序打印输出的东西。

以上就是本次分享的两个实用小工具的使用,希望大家喜欢~

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209335
  • 调试
    +关注

    关注

    7

    文章

    578

    浏览量

    33923
  • 终端
    +关注

    关注

    1

    文章

    1128

    浏览量

    29865
收藏 人收藏

    评论

    相关推荐

    嵌入式开发输出调试信息的几种方法

    《论语》有云:“工欲善其事,必先利其器”。输出调试信息是软件开发必不可少的调试利器,在出现bug时如果没有
    发表于 07-21 10:28 921次阅读
    嵌入式<b class='flag-5'>开发</b><b class='flag-5'>输出调试</b><b class='flag-5'>信息</b>的几种方法

    请问怎么输出调试消息IDE?

    我使用了大约十几种不同的开发环境,在几乎所有的开发环境,都有一种方法将调试文本和值输出到IDE
    发表于 08-29 10:17

    如何利用串口输出printf的打印信息

    PC机上,printf输出到显示设备,在嵌入式linux系统,一般利用printf输出调试信息,需要重定向串口。以AT91RM9200为例
    发表于 11-04 07:10

    怎么实现stm32串口2来输出调试信息

    怎么实现stm32串口2来输出调试信息
    发表于 12-01 06:41

    有哪几种方法可以实现STM32输出调试信息

    基于SEGGER的RTT方式可实现调试信息吗?怎样去使用STM32的串口输出调试信息呢?
    发表于 12-02 07:28

    怎样使用STM32CubeMX串口输出调试信息

    怎样使用STM32CubeMX串口输出调试信息呢?STM32CubeMX串口如何接收不定长的数据呢?
    发表于 12-08 06:45

    嵌入式设备是怎样通过semihost机制输出调试信息调试主机的

    dave:嵌入式设备通过semihost机制输出调试信息调试主机
    发表于 12-16 07:41

    超级终端无法输出调试信息且无法进入命令行cmd是什么原因呀

    原来一直能正常使用,今天突然在超级终端没有数据输出,重启无效,更新以前能够正常使用的系统之后,开发板系统能够正常下载运行,但是超级终端无法输出调试
    发表于 01-10 06:07

    如何使用J-Link SEGGER RTT打印输出调试信息?

    如何使用J-Link SEGGER RTT打印输出调试信息?
    发表于 02-10 08:00

    嵌入式开发为什么需要输出调试信息

    、变量值、函数调用堆栈等信息,有助于快速定位和解决问题。2.实时反馈 在开发过程中逐步增加新功能或者修改现有功能时,输出调试信息可以提供实时反馈。这使得可以快速地检查修改的效果。 3.
    发表于 11-28 16:46

    Linux输出信息同时信息记录到文件

     将程序的输出写到终端同时写入文件,可以用 tee 命令,解释一下 tee 命令的作用:read from standard input and write to s
    发表于 04-02 14:50 438次阅读

    嵌入式Linuxprintf重定向串口

    PC机上,printf输出到显示设备,在嵌入式linux系统,一般利用printf输出调试信息,需要重定向串口。以AT91RM9200为例
    发表于 11-01 17:22 24次下载
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>中</b>printf重定向<b class='flag-5'>到</b>串口

    单片机没有串口时如何打印调试信息

    输出调试信息是嵌入式开发必不可少的调试利器,嵌入式开发的一个特点是很多时候没有操作系统,或者没
    的头像 发表于 03-10 17:19 2581次阅读
    单片机没有串口时如何打印<b class='flag-5'>调试</b><b class='flag-5'>信息</b>

    APM飞控固件的两种输出调试信息的方法

    在无人机飞控固件开发过程中,我们经常需要实时输出一些调试信息(如一些变量的值、状态机切换提示等),在APM固件中有如下两种常用的输出调试
    的头像 发表于 07-02 17:33 2264次阅读
    APM飞控固件的两种<b class='flag-5'>输出调试</b><b class='flag-5'>信息</b>的方法

    Linux内核动态输出调试

    pr_debug()/dev_dbg()函数来输出信息,这些就使用了动态输出。 需要打开的内核配置选项: CONFIG_DEBUG_FS=yCONFIG_DYNAMIC_DEBUG=y
    的头像 发表于 09-27 15:45 534次阅读
    <b class='flag-5'>Linux</b>内核动态<b class='flag-5'>输出调试</b>