0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何通過(guò)Tracealyzer實(shí)現(xiàn)Linux系統(tǒng)的跟蹤?

麥克泰技術(shù) ? 來(lái)源:麥克泰技術(shù) ? 2023-12-08 14:08 ? 次閱讀

Tracealyzer是Percepio 公司開(kāi)發(fā)的一款可視化跟蹤工具, 目前它提供了30多種相互關(guān)聯(lián)的運(yùn)行時(shí)行為視圖,支持裸機(jī)、FreeRTOS、μC/OS-III、Zephyr、ThreadX、VxWorks、Linux系統(tǒng)的跟蹤。能夠幫助開(kāi)發(fā)人員加快固件的開(kāi)發(fā),減少對(duì)系統(tǒng)驗(yàn)證和性能優(yōu)化所需要的時(shí)間。

本文將介紹如何通過(guò)Tracealyzer實(shí)現(xiàn)Linux系統(tǒng)的跟蹤。

1)在Linux主機(jī)上安裝Tracealyzer

Tracealyzer應(yīng)用可以運(yùn)行在Windows系統(tǒng)和Linux系統(tǒng)上,如果在在Linux系統(tǒng)上安裝應(yīng)用,需Mono框架支持。

可以參考Tracealyzer應(yīng)用程序目錄中的RunningOnLinux.txt。其中包含針對(duì)某些Linux發(fā)行版的附加說(shuō)明。

2)在目標(biāo)系統(tǒng)設(shè)置LTTng

在運(yùn)行Linux系統(tǒng)的目標(biāo)設(shè)備上安裝LTTng(Linux Trace Toolkit next generation),具體步驟與使用的目標(biāo)系統(tǒng)相關(guān)。為了熟悉LLTng,可以先在主機(jī)上安裝。在Ubuntu系統(tǒng)上,只需要幾個(gè)apt-get命令。

確保運(yùn)行跟蹤的用戶(hù)位于tracing group組,或者使用root用戶(hù)進(jìn)行跟蹤。

在某些情況下,你需要在記錄跟蹤之前以root用戶(hù)身份啟動(dòng)lttng -sessiond。

安裝LLTng并確保用戶(hù)位于tracing group后,可以創(chuàng)建一個(gè)簡(jiǎn)單的跟蹤,例如:

lttng create

lttng enable-event -k sched_*

lttng add-context -k -t pid

lttng add-context -k -t ppid

lttng start

# Run some test command to get more activity in the trace echo “Hello world” | wc

lttng stop

lttng destroy

如果設(shè)置正確,將在~/ ltng -traces中記錄跟蹤信息。在Tracealyzer中選擇File ->Open→Open Folder加載trace文件。

3)在Tracealyzer中查看LTTng跟蹤記錄

在Linux系統(tǒng)中,使用Tracealyzer應(yīng)用目錄中的launch-tz.sh腳本啟動(dòng)Tracealyzer。

$ cd Tracealyzer--linux64

$ ./launch-tz.sh

如果不熟悉Tracealyzer,可以參考https://percepio.com/tag/tzlinux/下的Linux跟蹤系列文章。

接下來(lái),閱讀Tracealyzer用戶(hù)手冊(cè)。用戶(hù)手冊(cè)可以在Help菜單中找到。建議閱讀Views、Tools、Event Mapping、User Events和Intervals and State Machines章節(jié)。TraceRecorder的部分僅適用于RTOS跟蹤。

確保在設(shè)置中啟用了“Raw Events”,參見(jiàn)File ->Settings->Project Settings->Performance Settings,確保“Include Raw Events”項(xiàng)選中。

下一步是從目標(biāo)系統(tǒng)獲取LTTng跟蹤記錄。首先,使用File ->Open->Open Folder并選擇root下跟蹤文件夾,可以打開(kāi)上一步中記錄的跟蹤信息。

更簡(jiǎn)便的方法是使用Trace菜單中的Tracealyzer Library Tool,用戶(hù)可以使用SSH連接直接從Tracealyzer應(yīng)用中控制和下載跟蹤。

Target Library工具

使用Target Library,你可以設(shè)置目標(biāo)配置文件,以便于訪(fǎng)問(wèn)。使用New按鈕創(chuàng)建一個(gè)新的配置文件,設(shè)置目標(biāo)地址,用戶(hù)名和密碼或私鑰文件。配置文件創(chuàng)建完成后,通過(guò)Connect按鈕連接到目標(biāo)。

7da1ec5a-958c-11ee-8b88-92fbcf53809c.png

連接后,Target Library界面將打開(kāi)一個(gè)新標(biāo)簽,其中包含三個(gè)主要部分,跟蹤會(huì)話(huà)控制面板、命令日志和命令詳細(xì)信息框。單擊Start New Session按鈕啟動(dòng)新會(huì)話(huà)。默認(rèn)情況下,已經(jīng)定義了一個(gè)TzTrace會(huì)話(huà),它被預(yù)先配置為包括scheduling調(diào)度、syscalls系統(tǒng)調(diào)用、signals信號(hào)和UST事件。用戶(hù)可以使用Sessions和Channels Editor創(chuàng)建自己的設(shè)置。

Quick Connect選項(xiàng)

Target Library工具還提供了一個(gè)“Quick Connect”選項(xiàng),位于左下角,允許用戶(hù)在一個(gè)字符串中指定所有參數(shù),例如:

host=raspberrypi;user=pi;pass=raspberry;

Quick Connect選項(xiàng)的完整列表如下:

host -目標(biāo)的主機(jī)名或地址

port - SSH端口(默認(rèn)為22)

myhost -目標(biāo)端看到的主機(jī)地址,可以不指定,但如果目標(biāo)無(wú)法查找主機(jī)的主機(jī)名,則需顯式指定。

user—要連接的用戶(hù)

pass -用戶(hù)的密碼

keyFile -用于公鑰身份驗(yàn)證的密鑰文件,注意F大寫(xiě)。

cmdname - lttng命令的名稱(chēng)。默認(rèn)為lttng,但在使用前綴或類(lèi)似的情況下可以重寫(xiě)。

輸入連接字符串后,即可以使用 “Connect”按鈕進(jìn)行連接。這需要主機(jī)已安裝lttng -relayd工具,通常使用發(fā)行版的lytng -tools包安裝。如果在Windows主機(jī)上運(yùn)行Tracealyzer,則需要使用Windows Services For Linux,并確保在該環(huán)境中安裝并可訪(fǎng)問(wèn)lttng -relayd。

為了獲得最佳體驗(yàn),我們建議在包含調(diào)度事件的內(nèi)核通道上啟用pid和ppid上下文字段。在跟蹤用戶(hù)空間事件(UST)時(shí),建議啟用vtid上下文。這將有助于Tracealyzer在某些特殊情況下正確呈現(xiàn)事件,特別是涉及多核系統(tǒng)中的遷移。

用于Linux跟蹤的Tracealyzer特性

當(dāng)查看LTTng跟蹤信息時(shí),Tracealyzer提供了專(zhuān)為L(zhǎng)inux系統(tǒng)設(shè)計(jì)的分析功能:

Signals And Syscalls資源管理器工具,可以幫助分析進(jìn)程如何通過(guò)系統(tǒng)調(diào)用與內(nèi)核交互。例如,它可以讓你跟蹤正在訪(fǎng)問(wèn)的文件。它將嘗試幫助你跟蹤文件描述符(有一些限制),并幫助識(shí)別失敗的調(diào)用。它可以顯示每個(gè)線(xiàn)程、進(jìn)程或進(jìn)程樹(shù)的系統(tǒng)調(diào)用列表。此外,它還可以展示信號(hào)是如何產(chǎn)生和傳遞的。

syscalls plot繪制系統(tǒng)調(diào)用的持續(xù)時(shí)間。它支持兩種模式:執(zhí)行時(shí)間和響應(yīng)時(shí)間。前者將只考慮線(xiàn)程處于活動(dòng)狀態(tài)時(shí)的時(shí)間,而后者將包括線(xiàn)程切換出(即阻塞)的時(shí)間。

Communication flow view視圖具有特定于linux的模式,可以通過(guò)view菜單訪(fǎng)問(wèn)。它支持進(jìn)程樹(shù)模式、信號(hào)模式和文件描述符模式。后者可以幫助您跟蹤進(jìn)程如何通過(guò)管道等進(jìn)行通信。

如果在主跟蹤視圖或事件日志中選擇raw event并右鍵單擊它,則可以向快速繪圖中添加數(shù)字字段。這可以用于任何事件類(lèi)型,包括自己的用戶(hù)空間跟蹤事件。

Linux事件

Tracealyzer內(nèi)置了對(duì)以下類(lèi)型的Linux內(nèi)核事件的感知:

調(diào)度事件(內(nèi)核域中的sched_*)

信號(hào)事件(內(nèi)核域中的signal_*)

IRQ和SoftIRQ事件(內(nèi)核域的irq_*)

系統(tǒng)調(diào)用(在內(nèi)核域中--sycall -a)

其他事件將以“Raw Events”的形式呈現(xiàn)。默認(rèn)情況下,Tracealyzer不會(huì)解釋這些事件,只會(huì)在跟蹤視圖中顯示為事件標(biāo)簽(即那些具有青色背景色的事件標(biāo)簽),并且也會(huì)在事件日志中列出。

注意,Raw Events可以通過(guò)“Event Interpretation”來(lái)配置,以創(chuàng)建“User Events”。這些可以在用戶(hù)事件信號(hào)圖中繪制,并轉(zhuǎn)換為狀態(tài)機(jī)或自定義間隔。請(qǐng)參閱Tracealyzer用戶(hù)手冊(cè)中的“Event Mapping”、“User Events”和“Intervals and State Machines”章節(jié)。

7dca3d90-958c-11ee-8b88-92fbcf53809c.png

Tracealyzer目標(biāo)庫(kù)使用LTTng接口,通過(guò)SSH連接到目標(biāo)系統(tǒng)上的LTTng。LTTng接口對(duì)快照的支持有限。用戶(hù)也可以通過(guò)終端手動(dòng)控制LTTng。然后將跟蹤目錄傳輸?shù)街鳈C(jī),使用File ->Open Folder打開(kāi)。

緩沖區(qū)覆蓋不均勻的跟蹤可能會(huì)有問(wèn)題,多核Linux系統(tǒng)上的快照跟蹤有時(shí)就是這種情況。不均勻緩沖區(qū)覆蓋,指的是不同的LTTng通道或事件流覆蓋不同時(shí)間段的場(chǎng)景。如果為一個(gè)核調(diào)度數(shù)據(jù)的時(shí)間為30秒,而為另一個(gè)核調(diào)度數(shù)據(jù)的時(shí)間只有5秒,那么這些時(shí)間不一定在跟蹤的開(kāi)始或結(jié)束時(shí)對(duì)齊。這使得Tracealyzer很難同步調(diào)度跟蹤。這個(gè)問(wèn)題可以通過(guò)確保捕獲整個(gè)跟蹤來(lái)避免,例如通過(guò)將跟蹤流傳輸?shù)侥繕?biāo)文件系統(tǒng)(存儲(chǔ)在目標(biāo)上)。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    587

    瀏覽量

    27179
  • RTOS
    +關(guān)注

    關(guān)注

    20

    文章

    804

    瀏覽量

    119113
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61724
  • SSH
    SSH
    +關(guān)注

    關(guān)注

    0

    文章

    178

    瀏覽量

    16226

原文標(biāo)題:如何使用Tracealyzer跟蹤Linux?

文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Tracealyzer 技術(shù)分享

    售出以后返廠維修的情況,對(duì)于系統(tǒng)運(yùn)行情況,可以通過(guò)Tracealyzer 生成文件進(jìn)行分析,以用于改進(jìn)產(chǎn)品的性能。下面講一下Tracealyzer的工作原理:Tracelayzer 與
    發(fā)表于 01-04 21:10

    教你快遞入門(mén)-Tracealyzer跟蹤記錄庫(kù)移植

    。使用Tracealyzer,可以查看到系統(tǒng)的真實(shí)運(yùn)行情況,為開(kāi)發(fā)人員節(jié)省排除錯(cuò)誤的時(shí)間。Tracealyzer由PC應(yīng)用程序和跟蹤組件組成,Percepio提供了
    發(fā)表于 07-31 14:08

    使用Tracealyzer分析RTOS系統(tǒng)需掌握的基本概念

    Tracealyzer是一款RTOS行為分析工具,支持包括VxWorks、μC/OS-III、FreeRTOS在內(nèi)的眾多RTOS,以及Linux系統(tǒng)。Tracealyzer能夠分析RT
    發(fā)表于 09-27 10:10

    Tracealyzer利用CortexM的ITM實(shí)現(xiàn)跟蹤

    通過(guò)EWARM來(lái)實(shí)時(shí)獲取跟蹤數(shù)據(jù)。圖 6 設(shè)置流模式的連接方式九、開(kāi)啟實(shí)時(shí)跟蹤。需要先啟動(dòng)Tracealyzer,Live Stream窗口中點(diǎn)“Start Session”之后,EW
    發(fā)表于 12-05 15:34

    如何使用Tracealyzer預(yù)先定義的記錄器擴(kuò)展文件實(shí)現(xiàn)用戶(hù)應(yīng)用程序跟蹤?

    被記錄為“用戶(hù)事件”。從Tracealyzer V4.2.9版本開(kāi)始,增加了記錄器擴(kuò)展方式來(lái)跟蹤用戶(hù)應(yīng)用程序。記錄器擴(kuò)展方式可以幫助用戶(hù)實(shí)現(xiàn)中間件、驅(qū)動(dòng)程序API等重要功能函數(shù)調(diào)用的跟蹤
    發(fā)表于 12-18 13:37

    出現(xiàn)“丟失事件”?看Tracealyzer流模式如何調(diào)優(yōu)

    在使用自己定義的流端口實(shí)現(xiàn)跟蹤時(shí),如果Tracealyzer提示了“丟失事件”,那么你可以參照以下幾種方法,來(lái)提升流端口的性能。潛在的問(wèn)題可以分成3類(lèi):1、跟蹤記錄時(shí)沒(méi)有足夠的臨時(shí)緩
    發(fā)表于 02-19 10:06

    通過(guò)Tracealyzer用戶(hù)事件來(lái)了解應(yīng)用程序

    Tracealyzer中稱(chēng)為間隔)。間隔表示跟蹤中任意兩個(gè)事件之間的時(shí)間,例如按鍵按下和按鍵釋放。可以為任何類(lèi)型的事件定義間隔,無(wú)論我們決定使用內(nèi)核事件(如釋放或獲取信號(hào)量)還是用戶(hù)事件(如剛才定義的事件)。間隔對(duì)于理解系統(tǒng)中的
    發(fā)表于 08-20 10:11

    使用Tracealyzer跟蹤FreeRTOS內(nèi)核

    程序,還需要可用于周期性任務(wù)的定時(shí)機(jī)制。大多數(shù)現(xiàn)有的開(kāi)源 RTOS 實(shí)現(xiàn)了基于樹(shù)或列表的機(jī)制來(lái)跟蹤哪個(gè)任務(wù)已就緒。我們知道,基于樹(shù)的機(jī)制在復(fù)雜搜索操作方面是高效和極時(shí)的,但在處理刪除和插入操作上需花費(fèi)
    發(fā)表于 12-01 14:57

    如何使用Tracealyzer理解多任務(wù)調(diào)度?

    任務(wù)使用了多少CPU時(shí)間?在運(yùn)行時(shí)系統(tǒng)中實(shí)際發(fā)生了什么?Tracealyzer是一款記錄RTOS運(yùn)行時(shí)行為的可視化分析工具,通過(guò)30多個(gè)相互關(guān)聯(lián)的視圖對(duì)記錄數(shù)據(jù)進(jìn)行解析,向用戶(hù)展示應(yīng)用層級(jí)詳細(xì)視圖,作為
    發(fā)表于 12-17 16:01

    如何使用Tracealyzer流模式跟蹤ThreadX?

    Tracealyzer是Percepio 公司開(kāi)發(fā)的一款用于RTOS的嵌入式軟件系統(tǒng)的可視化跟蹤工具,提供了30多種相互關(guān)聯(lián)的可視化運(yùn)行時(shí)行為視圖,本文將介紹如何使用Tracealyzer
    發(fā)表于 09-23 13:25

    Tracealyzer實(shí)現(xiàn)跟蹤最簡(jiǎn)單的方法

    Tracealyzer 實(shí)現(xiàn)跟蹤最簡(jiǎn)單的方法就是使用SEGGER J-Link調(diào)試器,通過(guò)RTT功能來(lái)實(shí)現(xiàn)數(shù)據(jù)的傳送。RTT需要在RAM上
    的頭像 發(fā)表于 09-02 11:11 ?2104次閱讀

    如何使用Tracealyzer的流模式來(lái)跟蹤ThreadX應(yīng)用

    Tracealyzer是Percepio 公司開(kāi)發(fā)的一款用于RTOS的嵌入式軟件系統(tǒng)的可視化跟蹤工具,提供了30多種相互關(guān)聯(lián)的可視化運(yùn)行時(shí)行為視圖,本文將介紹如何使用Tracealyzer
    的頭像 發(fā)表于 09-16 11:14 ?1276次閱讀

    Tracealyzer跟蹤記錄庫(kù)移植

    使用Tracealyzer,首先要將跟蹤記錄庫(kù)集成到工程。安裝了Tracealyzer 4之后,在安裝路徑下找到以RTOS名稱(chēng)命名的文件夾,將TraceRecorder子文件夾復(fù)制到自己的工程目錄中。以FreeRTOS為例:
    的頭像 發(fā)表于 11-08 11:17 ?1594次閱讀

    Tracealyzer利用CortexM的ITM實(shí)現(xiàn)跟蹤

    Tracealyzer快照模式,能夠跟蹤RTOS系統(tǒng)的運(yùn)行時(shí)間受限于硬件可用的RAM大小,通常只能追蹤幾十秒的時(shí)間。使用流模式則不會(huì)存在這個(gè)問(wèn)題,只要電腦硬盤(pán)空間足夠,可用追蹤幾小時(shí)甚至幾天的時(shí)間。
    的頭像 發(fā)表于 12-20 11:12 ?1547次閱讀

    如何通過(guò)Tracealyzer導(dǎo)出的跟蹤數(shù)據(jù)對(duì)任務(wù)進(jìn)行分析?

    Tracealyzer是Percepio 公司開(kāi)發(fā)的一款用于RTOS的可視化跟蹤工具, 目前Tracealyzer提供了30多種相互關(guān)聯(lián)的運(yùn)行時(shí)行為視圖,對(duì)系統(tǒng)運(yùn)行時(shí)的行為提供了前所未
    的頭像 發(fā)表于 02-06 14:13 ?973次閱讀