一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

如何成為更好的防御性程序員 5個(gè)小技巧

PCB線路板打樣 ? 來源:LONG ? 2019-08-09 10:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在實(shí)驗(yàn)室中有效的方法并不總是在現(xiàn)場工作,通常是由于意外的交互和未發(fā)現(xiàn)的錯(cuò)誤。防御性編程可以幫助提高設(shè)計(jì)的彈性,但開發(fā)能夠處理不可預(yù)見情況的嵌入式軟件并非易事;它需要紀(jì)律和深謀遠(yuǎn)慮。以下是幫助開發(fā)人員成為更好的防御性程序員的五個(gè)技巧。

技巧1 -校驗(yàn)和或CRC數(shù)據(jù)

使用校驗(yàn)和和循環(huán)冗余校驗(yàn)( CRC)算法是開發(fā)人員驗(yàn)證通過串行鏈路發(fā)送的數(shù)據(jù)確實(shí)正確的好方法。經(jīng)過審查的嵌入式系統(tǒng)在測試臺(tái)的受控環(huán)境中始終表現(xiàn)如預(yù)期。然而,一旦系統(tǒng)被釋放到野外,系統(tǒng)運(yùn)行的環(huán)境就變得非常未知。嘈雜的環(huán)境可能會(huì)產(chǎn)生通信噪聲,導(dǎo)致位翻轉(zhuǎn)和誤讀數(shù)據(jù)。檢測此損壞數(shù)據(jù)的最佳希望是通過使用校驗(yàn)和或CRC對(duì)數(shù)據(jù)進(jìn)行健全性檢查。

提示2 -按合同設(shè)計(jì)

按合同設(shè)計(jì)是一種開發(fā)軟件的方法,可以生成高度定義的軟件界面,每個(gè)函數(shù)都與之相關(guān)聯(lián)具有明確的前提條件和后置條件。我們的想法是,如果應(yīng)用程序要調(diào)用特定函數(shù),則調(diào)用應(yīng)用程序必須滿足函數(shù)的前置條件才能獲得有效的響應(yīng)或操作。按合同設(shè)計(jì)對(duì)開發(fā)人員來說可能是一個(gè)強(qiáng)大的工具,因?yàn)樗鞔_指定了函數(shù)期望接收的內(nèi)容以及有效前置條件下的保證輸出。由于期望不是“在線之間讀取”,因此調(diào)用該函數(shù)的開發(fā)人員確切地知道了使用該函數(shù)的期望是什么。

技巧3 -使用斷言

斷言宏是開發(fā)人員驗(yàn)證其應(yīng)用假設(shè)的好方法在應(yīng)用程序中的給定點(diǎn)。斷言的使用對(duì)于在bug發(fā)生時(shí)捕獲程序中的錯(cuò)誤和意外行為非常有用。斷言甚至可以在契約式設(shè)計(jì)環(huán)境中使用,以驗(yàn)證合同的前提條件和后置條件是否已得到滿足。有關(guān)在嵌入式軟件中使用斷言的介紹,請(qǐng)考慮閱讀8個(gè)使用C中的斷言和何時(shí)斷言或不斷言來壓縮錯(cuò)誤的提示。

提示4 -檢查指針和緩沖區(qū)

指針和緩沖區(qū)是開發(fā)人員似乎總是遇到麻煩的兩個(gè)地方。在C中開發(fā)嵌入式系統(tǒng)時(shí),很容易意外地取消引用NULL指針或溢出緩沖區(qū)。防御程序員應(yīng)該在取消引用之前檢查指針的有效性。指針是否為NULL?不要去除它!存儲(chǔ)在指針中的值是否為有效值?如果是,則取消引用。

指針?biāo)惴ê蛿?shù)組的使用也很危險(xiǎn)。開發(fā)人員應(yīng)該在緩沖區(qū)和指針?biāo)阈g(shù)運(yùn)算中添加邊界檢查,以確保結(jié)果保留在它們應(yīng)該的內(nèi)存空間內(nèi)。意外地僅通過一個(gè)字節(jié)覆蓋內(nèi)存可能會(huì)對(duì)嵌入式系統(tǒng)產(chǎn)生災(zāi)難性后果,更重要的是會(huì)對(duì)其用戶造成災(zāi)難性后果。

提示5 -使用堆棧監(jiān)視器

執(zhí)行最壞情況的堆棧分析并正確調(diào)整堆棧大小是一項(xiàng)艱巨的任務(wù)。通常,堆棧的大小要么保留在編譯器的默認(rèn)設(shè)置中,要么開發(fā)人員在一張紙上寫下幾個(gè)可能的值并使用“eeny meeny miny moe”技術(shù)。這兩種技術(shù)都不夠,堆棧溢出的最壞情況成為現(xiàn)實(shí)。

開發(fā)人員可以通過監(jiān)視此類事件來幫助防止堆棧溢出。大多數(shù)實(shí)時(shí)操作系統(tǒng)都內(nèi)置了堆棧監(jiān)視器。啟用堆棧監(jiān)視器只不過是使用RTOS的配置調(diào)整宏。在裸機(jī)系統(tǒng)中,開發(fā)人員需要更加積極主動(dòng),并且要么自己編寫堆棧監(jiān)視器,要么使用可以在Internet上找到的許多可用堆棧監(jiān)視器之一。要了解有關(guān)堆棧監(jiān)視器的更多信息,請(qǐng)考慮通過七個(gè)簡單步驟閱讀創(chuàng)建堆棧監(jiān)視器并使用堆棧防護(hù)改進(jìn)代碼完整性

最后的想法

這五個(gè)技巧只是開發(fā)人員如何通過防御性編程改進(jìn)嵌入式軟件的幾個(gè)例子。還有許多其他技術(shù),例如編寫安全代碼和加密數(shù)據(jù),這些技術(shù)可以幫助提高嵌入式系統(tǒng)即使在不可預(yù)見的情況下也能繼續(xù)運(yùn)行的機(jī)會(huì)。

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

    關(guān)注

    4

    文章

    954

    瀏覽量

    30392
  • PCB打樣
    +關(guān)注

    關(guān)注

    17

    文章

    2977

    瀏覽量

    22540
  • 華強(qiáng)PCB
    +關(guān)注

    關(guān)注

    8

    文章

    1831

    瀏覽量

    28583
  • 華強(qiáng)pcb線路板打樣

    關(guān)注

    5

    文章

    14629

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    成為優(yōu)秀程序員的條件(下)

    (接“成為優(yōu)秀程序員的條件(上))7 需求理解能力。程序員需要理解一個(gè)模塊的需求,評(píng)估該模塊在系統(tǒng)運(yùn)營中所處的環(huán)境8 復(fù)用,模塊化思維能力
    發(fā)表于 08-22 11:52

    嵌入式開發(fā)中防御性編程的要求

    的檢查十分弱小,需要程序員謹(jǐn)慎的考慮代碼,在必要的時(shí)候增加判斷;防御性編程的另一個(gè)核心思想是假設(shè)代碼運(yùn)行在并不可靠的硬件上,外接干擾有可能會(huì)打亂程序執(zhí)行順序、更改RAM存儲(chǔ)數(shù)據(jù)等等。1
    發(fā)表于 12-15 07:20

    程序員需要學(xué)什么,微軟資深程序員學(xué)習(xí)手冊(cè)面試寶典資料

    程序員是現(xiàn)在比較吃香的工作。程序員工資高還不需要和復(fù)雜的社會(huì)打交道。那么怎么成為一名程序員?當(dāng)程序員需要學(xué)什么?
    發(fā)表于 03-22 11:54 ?30次下載

    成為優(yōu)秀程序員的7個(gè)方法

    程序員總是有很多的決定,不是嗎?如果你的新年待辦事項(xiàng)還是空白的話,那么可以考慮使用下面這些程序員的想法。即使是最聰明的人,也還有成長空間。以下內(nèi)容摘錄自 Kevlin Henney 的《程序員應(yīng)該知道的97件事》。
    的頭像 發(fā)表于 11-21 11:18 ?1588次閱讀

    10倍效率程序員是否真的存在

    在編程神話中,一個(gè) 10 倍效率的程序員可以完成一個(gè)普通程序員 10 倍的工作量。「普通程序員」就是指,善于完成工作但沒有 10 倍效率
    的頭像 發(fā)表于 10-30 11:50 ?2341次閱讀

    程序員如何定義

    當(dāng)了幾年的程序員了,一直都在想一個(gè)問題,什么是程序員,程序員應(yīng)該做好那些事情,什么樣的程序員是有素質(zhì)的
    的頭像 發(fā)表于 12-18 14:15 ?3189次閱讀

    Java程序員學(xué)習(xí)的6個(gè)小技巧

    知識(shí)改變命運(yùn),對(duì)于Java程序員來說,技術(shù)不斷更新,只有及時(shí)充電,才能不被市場淘汰。今天為大家分享Java程序員學(xué)習(xí)的6個(gè)小技巧。
    的頭像 發(fā)表于 02-11 16:11 ?2797次閱讀

    怎樣成為合格的程序員

    偶爾的,我會(huì)被人問道:如何成為一名優(yōu)秀的程序員,更或者,如何成為一名程序員。每次人們問起,我都力圖給出不同的答案。因此,我的答案是各種各樣的。下面就是我認(rèn)為的
    的頭像 發(fā)表于 04-15 16:32 ?1771次閱讀

    菜鳥程序員和大神程序員的差距

    剛剛走出就業(yè)的程序員,技術(shù)是剛剛起步的基點(diǎn)。那下面我們就聊一聊有關(guān)技術(shù)的東西。首先請(qǐng)您先想想這幾個(gè)問題?,F(xiàn)在社會(huì)上有很多程序員,CSDN就是我們程序員的家,那您是否可想過程序員為什么會(huì)
    的頭像 發(fā)表于 06-03 15:56 ?2826次閱讀

    什么是程序員

    當(dāng)了幾年的程序員了,一直都在想一個(gè)問題,什么是程序員,程序員應(yīng)該做好那些事情,什么樣的程序員是有素質(zhì)的
    的頭像 發(fā)表于 06-04 16:21 ?9473次閱讀

    為什么要成為高級(jí)程序員

    程序員到高級(jí)程序員的職業(yè)生涯要經(jīng)歷以下幾個(gè)階段:初級(jí)程序員、中級(jí)程序員、最后是高級(jí)程序員。
    的頭像 發(fā)表于 07-11 16:51 ?2749次閱讀

    怎樣成為優(yōu)秀的程序員

    每次我曾經(jīng)的同學(xué)打電話向我詢問程序員這個(gè)行業(yè)怎么樣,我都會(huì)很耐心的講上一個(gè)半小時(shí),談人生談理想,并判斷他是否適合程序員這個(gè)行業(yè)。
    的頭像 發(fā)表于 10-23 16:26 ?2339次閱讀

    怎樣成為頂尖的程序員

    在IT行業(yè)飛速發(fā)展的時(shí)代,有過的程序員,有些成為程序員心中的大神,那么那些成為大神的程序員們是因?yàn)槭裁?b class='flag-5'>成
    的頭像 發(fā)表于 11-06 16:12 ?3282次閱讀

    成為優(yōu)秀程序員必須知道的7個(gè)好習(xí)慣

    作為一個(gè)從業(yè)快10年的程序員,我想給新入行的程序員們一些建議。這些建議是我希望自己可以在畢業(yè)時(shí)就讀到的,也希望它們可以幫助你成為個(gè)
    的頭像 發(fā)表于 01-06 16:09 ?3252次閱讀

    代碼防御性編程不得不知的技巧

    1 什么是防御性編程?顧名思義,防御性編程是一種細(xì)致、謹(jǐn)慎的編程方法。為了開發(fā)可靠的軟件,我們要設(shè)計(jì)系統(tǒng)中的每個(gè)組件,以使其盡可能的”保護(hù)”自己。我們通過明確地在代碼中對(duì)設(shè)想進(jìn)行檢查,這是一種努力
    的頭像 發(fā)表于 11-22 09:49 ?1577次閱讀