91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

無(wú)痛多線程:擺脫調(diào)試地獄的五個(gè)簡(jiǎn)單技巧

星星科技指導(dǎo)員 ? 來(lái)源:嵌入式計(jì)算設(shè)計(jì) ? 作者:Dr. Johan Kraft ? 2022-11-18 17:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

多線程 RTOS 應(yīng)用程序的一個(gè)更被低估的方面是,您不能只查看代碼來(lái)完全理解應(yīng)用程序的工作原理。

你需要知道它的各個(gè)部分是如何相互通信的,你需要很多其他信息:任務(wù)需要多長(zhǎng)時(shí)間才能執(zhí)行,是否存在任何潛在的競(jìng)爭(zhēng)條件或死鎖,你是否滿足你的計(jì)時(shí)要求等等。

您希望代碼執(zhí)行的操作和實(shí)際執(zhí)行的操作可能在許多方面有所不同,這些差異在代碼中既難以看到,也難以測(cè)試。對(duì)于所有使用多線程代碼的開(kāi)發(fā)人員來(lái)說(shuō),無(wú)論他們使用 RTOS 還是 Linux,這都是一個(gè)挑戰(zhàn),最好使用可視化跟蹤診斷工具進(jìn)行管理,這些工具可以讓您深入了解我所說(shuō)的代碼的“黑暗面”——您可以從字面上看到它在執(zhí)行時(shí)的行為。

視覺(jué)時(shí)間線是一個(gè)很好的起點(diǎn)。在許多情況下,查看隨時(shí)間分布的軟件事件、消息和任務(wù)執(zhí)行非常重要,例如,當(dāng)從癥狀中看不出錯(cuò)誤的確切位置時(shí),計(jì)算機(jī)在數(shù)字處理和文本日志中搜索方面可能非常出色,但通常您不知道要搜索什么。在視覺(jué)模式識(shí)別方面,人腦表現(xiàn)出色。

poYBAGN3S-GAJgWeAAGZXegH8Es210.png

顯示軟件事件的可視化時(shí)間線為您提供了嵌入式應(yīng)用程序內(nèi)部工作的概述,如果您需要深入挖掘以查找錯(cuò)誤,這是一個(gè)很好的起點(diǎn)。

調(diào)試時(shí)更好的洞察力意味著猜測(cè)更少,找到根本原因的幾率更高。在無(wú)法使用傳統(tǒng)方法(如在斷點(diǎn)上停止系統(tǒng))的情況下,它也有很大幫助。

你說(shuō)printf調(diào)試呢?是的,printf 易于部署,有時(shí)它確實(shí)是您所需要的,但它的價(jià)格很高。將調(diào)試打印輸出放在對(duì)時(shí)間敏感的應(yīng)用程序代碼中是有風(fēng)險(xiǎn)的,并且不能很好地?cái)U(kuò)展到更復(fù)雜的應(yīng)用程序和更快的處理器。此外,printf 通常非常慢,每次打印輸出大約幾毫秒。相比之下,軟件事件跟蹤的優(yōu)化解決方案可以比這快 100 倍左右,允許您在同一時(shí)間段內(nèi)收集更多信息。

確保在整個(gè)開(kāi)發(fā)項(xiàng)目中測(cè)量時(shí)間和性能。如果做得好,這可以確保您能夠在開(kāi)發(fā)過(guò)程中檢測(cè)和解決任何問(wèn)題,而不是在承諾的交付日期之前與時(shí)間賽跑。

滿足時(shí)序規(guī)格對(duì)于具有硬要求的實(shí)時(shí)系統(tǒng)至關(guān)重要,但對(duì)于幾乎任何嵌入式系統(tǒng)的用戶體驗(yàn)也很重要。沒(méi)有人喜歡緩慢的觸摸屏或慢速的wifi路由器,因?yàn)樗鼰o(wú)法提供承諾的吞吐量。同樣,從源代碼來(lái)看,根本原因可能并不明顯,如果真正的問(wèn)題是糟糕的軟件設(shè)計(jì),簡(jiǎn)單地切換到更快的處理器可能沒(méi)有任何好處。

如果您發(fā)現(xiàn)自己處于項(xiàng)目的“調(diào)試地獄”中,大量的調(diào)試會(huì)消耗房間中的所有能量并阻止項(xiàng)目向前發(fā)展,那么可視化跟蹤診斷可以幫助您。在基于 RTOS 的應(yīng)用程序的軟件設(shè)計(jì)中未能遵循最佳實(shí)踐通常是一個(gè)主要因素,它可能以性能差、處理器負(fù)載高或瞬態(tài)錯(cuò)誤等形式出現(xiàn)。任務(wù)之間的大量依賴關(guān)系是設(shè)計(jì)可以改進(jìn)的另一個(gè)常見(jiàn)信號(hào)

即使是架構(gòu)不佳的系統(tǒng)今天也可能運(yùn)行,但它們將具有復(fù)雜和混亂的行為,再加上糟糕的可測(cè)試性,這增加了難以捉摸的錯(cuò)誤泄漏到生產(chǎn)設(shè)備的風(fēng)險(xiǎn)。而且它們幾乎肯定會(huì)很脆弱,因此代碼或環(huán)境中的微小更改可能會(huì)導(dǎo)致它們失敗。

可視化跟蹤診斷可幫助開(kāi)發(fā)人員分析和改進(jìn)其軟件設(shè)計(jì),并確保穩(wěn)定可靠的系統(tǒng)行為。當(dāng)您能夠更早地發(fā)現(xiàn)軟件設(shè)計(jì)缺陷時(shí),修復(fù)它們所需的更改更少。設(shè)計(jì)改進(jìn)還可以帶來(lái)更好的系統(tǒng)性能和響應(yīng)能力,這反過(guò)來(lái)又可以讓您選擇更具成本效益的處理器來(lái)降低 BoM 成本或使用較低的時(shí)鐘頻率以延長(zhǎng)電池壽命。

使用跟蹤工具將跟蹤數(shù)據(jù)連續(xù)流式傳輸?shù)街鳈C(jī),如有必要,您可以在主計(jì)算機(jī)上存儲(chǔ)很長(zhǎng)的記錄,甚至可以在屏幕上實(shí)時(shí)顯示數(shù)據(jù)。跟蹤流使您能夠監(jiān)視系統(tǒng)測(cè)試或查找難以重現(xiàn)的罕見(jiàn)錯(cuò)誤。可視化跟蹤診斷允許在高級(jí)可視化概述中發(fā)現(xiàn)異常,并向下鉆取到特定事件以準(zhǔn)確了解發(fā)生了什么。

最后,可視化跟蹤診斷可以作為純軟件解決方案實(shí)現(xiàn),不需要額外的硬件,甚至不需要調(diào)試探針。內(nèi)存和處理器使用量是有成本的,但通常不超過(guò)這個(gè)成本,你可以在整個(gè)開(kāi)發(fā)、測(cè)試甚至部署過(guò)程中將其保留在系統(tǒng)中。在所有階段都提供這些信息意味著每個(gè)人都每天都能從中受益。

此方法允許記錄應(yīng)用程序中的任何相關(guān)信息,包括運(yùn)行時(shí)未公開(kāi)的內(nèi)部數(shù)據(jù)和狀態(tài)。數(shù)據(jù)可以與可視化執(zhí)行時(shí)間線并行繪制,以便在運(yùn)行時(shí)深入了解您的應(yīng)用程序。這樣,您可以制作出擊敗競(jìng)爭(zhēng)對(duì)手的出色產(chǎn)品。

遵循這五個(gè)最佳實(shí)踐,在系統(tǒng)級(jí)別獲得所需的實(shí)時(shí)行為可見(jiàn)性,以提高產(chǎn)品質(zhì)量并加快開(kāi)發(fā)速度,從而更快地進(jìn)入市場(chǎng)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    20265

    瀏覽量

    252730
  • RTOS
    +關(guān)注

    關(guān)注

    25

    文章

    866

    瀏覽量

    123074
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【瑞薩RA × Zephyr評(píng)測(cè)】多線程和看門狗

    本文章旨在評(píng)估使用 Zephyr RTOS 在 Renesas FPB-RA6E2 開(kāi)發(fā)板上實(shí)現(xiàn)多線程調(diào)度與硬件看門狗功能的應(yīng)用。評(píng)估內(nèi)容包括任務(wù)調(diào)度、看門狗初始化流程、主程序邏輯的詳細(xì)解析,以及實(shí)驗(yàn)現(xiàn)象與數(shù)據(jù)分析。
    的頭像 發(fā)表于 01-10 10:23 ?2500次閱讀
    【瑞薩RA × Zephyr評(píng)測(cè)】<b class='flag-5'>多線程</b>和看門狗

    解析Linux的進(jìn)程、線程和協(xié)程

    和系統(tǒng)資源。線程的引入使得多核處理器得以充分利用,因?yàn)?b class='flag-5'>多線程程序可以更有效地分配和管理多核心的計(jì)算資源。 線程的特點(diǎn)包括: (1)共享性:線程之間共享同一進(jìn)程的地址空間,可以更容易
    發(fā)表于 12-22 11:00

    多線程的系統(tǒng)

    多線程系統(tǒng)的事件響應(yīng)也是在中斷中完成的,但事件的處理是在線程中完成的。在多線程系統(tǒng)中,線程跟中斷一樣,也具有優(yōu)先級(jí),優(yōu)先級(jí)高的線程會(huì)被優(yōu)先執(zhí)
    發(fā)表于 12-08 07:55

    Linux多線程對(duì)比單線程的優(yōu)勢(shì)

    ,而單線程則需要通過(guò)進(jìn)程間通信來(lái)實(shí)現(xiàn)?!干舷挛那袚Q開(kāi)銷小」:線程的上下文切換比進(jìn)程小,因?yàn)樗鼈児蚕硐嗤牡刂房臻g?!柑岣唔憫?yīng)性」:多線程可以使程序更加響應(yīng)用戶輸入或其他事件,避免阻塞。下面是一
    發(fā)表于 12-01 06:11

    rt-thread studio 如何進(jìn)行多線程編譯?

    ,使用的是5800h+32g內(nèi)存+sn550 ssd,開(kāi)啟16線程編譯時(shí)cpu的占用率也只能到30%,編譯完整個(gè)工程需要3分鐘 感覺(jué)多線程編譯設(shè)置沒(méi)有生效,有辦法提高編譯速度嗎 rtthread studio版本是 2.2.9
    發(fā)表于 10-11 09:16

    多線程與多處理有何區(qū)別

    多處理也稱為進(jìn)程,進(jìn)程是一個(gè)在自己的內(nèi)存空間中運(yùn)行的獨(dú)立程序。
    的頭像 發(fā)表于 09-16 14:21 ?584次閱讀

    【HZ-T536開(kāi)發(fā)板免費(fèi)體驗(yàn)】—— linux創(chuàng)建線程

    自己的私有資源。 在linux系統(tǒng)中,線程狀態(tài)通常反映了當(dāng)前線程的當(dāng)前活動(dòng)和執(zhí)行階段。 主要分為: 1。運(yùn)行轉(zhuǎn)態(tài) 2。阻塞轉(zhuǎn)態(tài) 3。終止?fàn)顟B(tài) 如何區(qū)分單線程多線程? 在單個(gè)程序中只
    發(fā)表于 09-01 21:31

    【RA4E2開(kāi)發(fā)板評(píng)測(cè)】LED1及LED2輪流點(diǎn)亮并同時(shí)亮8秒,體驗(yàn)FreeRTOS多線程

    我們要多線程操作時(shí),就需要用到RTOS(Real-Time Operating System)。FreeRTOS實(shí)時(shí)操作系統(tǒng)開(kāi)發(fā)里面使用到vTaskDelay函數(shù),它是對(duì)CPU的時(shí)分復(fù)用,系統(tǒng)將這個(gè)
    發(fā)表于 08-24 17:24

    UVC+MSC實(shí)現(xiàn)中MSC線程未運(yùn)行的原因?

    應(yīng)用程序所需的線程和對(duì)象。這是一個(gè)致命錯(cuò)誤,我們無(wú)法 * 繼續(xù)。 */ /* 在此處添加自定義恢復(fù)或調(diào)試操作 */ while ( 1 ); } } ```
    發(fā)表于 07-16 07:08

    多線程的安全注意事項(xiàng)

    多線程安全是指多個(gè)線程同時(shí)訪問(wèn)或修改共享資源時(shí),能夠保證程序的正確性和可靠性。 開(kāi)發(fā)者選擇TaskPool或Worker進(jìn)行多線程開(kāi)發(fā)時(shí),在TaskPool和Worker的工作線程中導(dǎo)
    發(fā)表于 06-20 07:49

    鴻蒙5開(kāi)發(fā)寶藏案例分享---跨線程性能優(yōu)化指南

    發(fā)現(xiàn)鴻蒙寶藏:跨線程序列化性能優(yōu)化實(shí)戰(zhàn)指南 大家好呀!今天在翻鴻蒙文檔時(shí)挖到一個(gè)超級(jí)實(shí)用的工具—— DevEco Profiler的序列化檢測(cè)功能 !平時(shí)用<span class
    發(fā)表于 06-12 17:13

    工控一體機(jī)多線程任務(wù)調(diào)度優(yōu)化:聚徽分享破解工業(yè)復(fù)雜流程高效協(xié)同密碼

    在當(dāng)今工業(yè) 4.0 的浪潮下,工業(yè)生產(chǎn)正朝著高度自動(dòng)化、智能化的方向大步邁進(jìn)。生產(chǎn)流程日益復(fù)雜,眾多任務(wù)需要同時(shí)、高效地協(xié)同執(zhí)行,這對(duì)工業(yè)控制系統(tǒng)的核心 —— 工控一體機(jī)提出了前所未有的挑戰(zhàn)。多線程
    的頭像 發(fā)表于 05-28 14:06 ?657次閱讀

    使用Percepio View免費(fèi)跟蹤工具分析Zephyr應(yīng)用

    Percepio View免費(fèi)跟蹤工具現(xiàn)在可以針對(duì)Zephyr應(yīng)用程序進(jìn)行跟蹤和可視化分析了。Percepio View可以幫助開(kāi)發(fā)人員理解和調(diào)試Zephyr中的固定優(yōu)先級(jí)的多線程行為及復(fù)雜的線程交互。
    的頭像 發(fā)表于 05-27 15:08 ?806次閱讀
    使用Percepio View免費(fèi)跟蹤工具分析Zephyr應(yīng)用

    一種實(shí)時(shí)多線程VSLAM框架vS-Graphs介紹

    針對(duì)現(xiàn)有VSLAM系統(tǒng)語(yǔ)義表達(dá)不足、地圖可解釋性差的問(wèn)題,本文提出vS-Graphs,一種實(shí)時(shí)多線程VSLAM框架。該方案顯著提升了重建地圖的語(yǔ)義豐富度、可解釋性及定位精度。實(shí)驗(yàn)表明
    的頭像 發(fā)表于 04-19 14:07 ?1034次閱讀
    一種實(shí)時(shí)<b class='flag-5'>多線程</b>VSLAM框架vS-Graphs介紹

    進(jìn)程、線程、協(xié)程傻傻分不清?一文帶你徹底扒光它們的\"底褲\"!

    保存寄存器和棧指針(就像你下班時(shí)關(guān)燈、鎖門) 死鎖風(fēng)險(xiǎn):兩個(gè)線程同時(shí)搶最后一塊披薩(資源競(jìng)爭(zhēng)) 職場(chǎng)類比: **奶茶店有3個(gè)員工(3個(gè)線程
    發(fā)表于 03-26 09:27