指定終端輸出 如何同時輸出除錯資訊到終端及檔案?

2021-10-14 18:31:41 字數 1342 閱讀 7215

在linux下的開發中,printf列印除錯資訊預設輸出到標準輸出 stdout (即螢幕/終端)中。我們也可以使用輸出重定向技術輸出到指定檔案中,輸出重定向即是把原本要輸出到螢幕的資訊寫入到指定檔案中。

比如:

但是有時候既要實時檢視列印除錯資訊,又要把這些除錯資訊儲存下來發給他人分析。

下面分享能達到這個需求的兩種方法:

script工具是乙個非常使用的工具,可以把輸出到終端的資訊記錄下來。使用方法如:

(1)輸入script log.txt命令開始儲存終端輸出的資訊  ,其中log.txt為需要寫入的log檔案,可隨意命名。

(2)輸入exit退出儲存。

演示如下:

之前我只知道有script 這樣乙個工具,而且經常在ubuntu上使用。奈何開發板裡的系統沒這個工具,所以很長的一段時間我都是等程式跑完後我手動從終端拷貝全部資訊到文字中儲存。。。

剛開始程式跑得不久,日誌資訊還不是很多,還可以接受。後面程式跑久了,日誌資訊越來越多,再這麼手動拷貝實在受不了。

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

tee工具用於將資料重定向到檔案,另一方面還可以提供乙份重定向資料的副本作為後續命令的stdin。簡單的說就是把資料重定向到給定檔案和螢幕上。

存在快取機制,每1024個位元組將輸出一次。若從管道接收輸入資料,應該是緩衝區滿,才將資料轉存到指定的檔案中。若檔案內容不到1024個位元組,則接收完從標準輸入裝置讀入的資料後,將重新整理一次緩衝區,並轉存資料到指定檔案。

演示如下:

可見,使用tee工具輸入到文字裡的內容比script工具輸入到文字裡的內容還要乾淨,就是程式列印輸出的東西。

以上就是本次分享的兩個實用小工具的使用,希望大家喜歡~

1.【重磅】2020慕尼黑華南展開展在即丨精彩活動搶先看,註冊觀展贏好禮~

2.c++仿函式了解一下?

3.嵌入式,真的不需要單元測試?

5.什麼是cortex-m核心的mpu?

6.stm32強大的生態,在這裡一起總結!

QT輸出除錯資訊

1 window下qt中用qdebug 輸出除錯資訊到console控制台的設定方法 2 qt輸出除錯資訊 在qt中輸出除錯資訊有四個函式,分別是 qdebug qwarning qcritical以及qfatal,從字面資訊上就可以看出,他們屬於不同的等級,由於這四個函式的使用都相似,所以這裡只選...

輸出除錯資訊qDebug的應用

1 基本語法 qdebug 1111111111111111 int i 0 qstring s ss bool bl true qdebug 1111111111111111 d,s,d i,s,bl 布林型輸出的是0或1 在字元介面上執行程式時,會將資訊直接輸出到介面上。2 可以在正式執行時禁止...

使用日誌類RFileLogger輸出除錯資訊

一 概述 類rfilelogger對應的標頭檔案和庫檔案分別是flogger.h和flogger.lib。我習慣把opening 放到我希望跟蹤的class的constructl 函式裡面,然後在析構函式裡closing.在真正編碼時,你最好檢測一下connect和createlog是否返回了ker...