最近在檢視開機時間 , 記憶中有一個 bootchart 可用.
先來看看目前 bootchart 發展到如何 , 有哪些 tools 可使用.下列網站說明的很清楚,也有很多資源可以使用.
http://elinux.org/Bootchart
A. 觀看一下目前工作的機器.發現使用的 busybox 已經有內建 bootchart 了.
事情好辦多了 , 接著開始產生 bootchart 資料吧.
B.基本上應該將kernel command line 的 init=./init 改為 init=/sbin/bootchart .
不過我只想觀看一下rcS 啟動後有哪些 task 號時間.
所以就在 rcS 的第一行加上 "/sbin/bootchart init & " 這樣就可以了.
C.產生的資料為 bootchart.gz , 並且放在 /var/log 中.
解開 bootchart.gz 會發現一堆文字檔案,很難關看booting 過程中的訊息.
D.下列網址(bootchart2) 提供了一個可以將這些文字檔案轉成 png file 的 utility.
來安裝吧 ..... !
https://github.com/mmeeks/bootchart
1. 下載 source code.
2. 依照說明文件, 只要進行 " make " 即可 (Fedora 20 i686 ).
3. 將 target 上的 /var/log/bootchart.gz 上傳回 Fedora (我慣用 fedora )
4. [jeff@...]$ /home/<your bootchart dir>/bootchart-master/pybootchartgui.py bootchart.tgz
5. 就會產生 bootchart.png file 了.
E. bootchart 圖片就不在上傳了, 網路上都有很多 .
2014年4月21日 星期一
2014年4月11日 星期五
Printf 不能輸出到 console ....
最近工作上發現 , 有使用者的程式使用 printf 來 debug , 不過卻沒有輸出 .
網路上有說使用 fprintf + stdout or stderr 等方式 . 不過在我們的環境下卻沒有辦法 .
最後 , 我使用 暴力方式 解決了 !!
首先 , 先了解 console 是哪個 tty . 然後在 程式內 直接 fopen tty , 接著用 fprointf 的方式直接寫過去就可以了 !!
雖然這樣的方式不好 , 不過先可以用 , 有時間在研究一下正規方式 .
============================
#define AP_DEBUG_ON
#if defined (AP_DEBUG_ON)
#define DEBUG_MSG(S,A...) fprintf(ttyfd,"==== [%s]:[%d]:" S "\n",__FUNCTION__,__LINE__,## A)
#else
#define DEBUG_MSG(S,A...) do {} while (0)
#endif
FILE *ttyfd ;
int main(int argc, char **argv)
{
ttyfd = fopen("/dev/ttyS0", "w");
...................................
DEBUG_MSG("flag:%d -> %d ",flag,flag ? 0 : 1 );
}
網路上有說使用 fprintf + stdout or stderr 等方式 . 不過在我們的環境下卻沒有辦法 .
最後 , 我使用 暴力方式 解決了 !!
首先 , 先了解 console 是哪個 tty . 然後在 程式內 直接 fopen tty , 接著用 fprointf 的方式直接寫過去就可以了 !!
雖然這樣的方式不好 , 不過先可以用 , 有時間在研究一下正規方式 .
============================
#define AP_DEBUG_ON
#if defined (AP_DEBUG_ON)
#define DEBUG_MSG(S,A...) fprintf(ttyfd,"==== [%s]:[%d]:" S "\n",__FUNCTION__,__LINE__,## A)
#else
#define DEBUG_MSG(S,A...) do {} while (0)
#endif
FILE *ttyfd ;
int main(int argc, char **argv)
{
ttyfd = fopen("/dev/ttyS0", "w");
...................................
DEBUG_MSG("flag:%d -> %d ",flag,flag ? 0 : 1 );
}
訂閱:
文章 (Atom)