日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

避坑:不要在調(diào)試版本中的修改程序邏輯

來源: 責(zé)編: 時間:2023-10-13 14:37:35 271觀看
導(dǎo)讀作為一名開發(fā)者,我想,你最不希望發(fā)生的事情之一是:當(dāng)你調(diào)試一個Bug的時候,Bug就消失了,但直接運行的時候,Bug又出現(xiàn)了。通過 #ifdef DEBUG 技法,可以將額外的調(diào)試代碼放置到程序中。畢竟,這些調(diào)試代碼僅會在程序的調(diào)試版本中

作為一名開發(fā)者,我想,你最不希望發(fā)生的事情之一是:當(dāng)你調(diào)試一個Bug的時候,Bug就消失了,但直接運行的時候,Bug又出現(xiàn)了。Uf428資訊網(wǎng)——每日最新資訊28at.com

通過 #ifdef DEBUG 技法,可以將額外的調(diào)試代碼放置到程序中。畢竟,這些調(diào)試代碼僅會在程序的調(diào)試版本中才會生效。但是,一定要注意的是,這些調(diào)試代碼不應(yīng)該修改程序的執(zhí)行邏輯。Uf428資訊網(wǎng)——每日最新資訊28at.com

你可以在調(diào)試代碼中執(zhí)行參數(shù)驗證,執(zhí)行斷言,追蹤資源的使用,這可能會降低程序的性能并消耗更多的計算資源,這些都是可以接受的,唯一需要注意的一條是:不要在調(diào)試代碼中修改程序的流程。Uf428資訊網(wǎng)——每日最新資訊28at.com

我們來看看下面的例子。Uf428資訊網(wǎng)——每日最新資訊28at.com

Uf428資訊網(wǎng)——每日最新資訊28at.com

上面的代碼是錯誤的,你是否已經(jīng)看出來了?
調(diào)試版本的行為與發(fā)行版本根本不同。如果有人使用 NULL 為 p 參數(shù)調(diào)用此函數(shù),則程序的發(fā)行版本將崩潰,但調(diào)試版本將捕獲錯誤并使調(diào)用失敗。
Uf428資訊網(wǎng)——每日最新資訊28at.com

不要在調(diào)試版本中修改函數(shù)的語義。如果發(fā)行版本崩潰,則調(diào)試版本也必須以相同的方式崩潰。當(dāng)然,你可以在崩潰之前記錄錯誤日志信息,但你仍然需要它”崩潰”,和發(fā)行版本行為保持一致。Uf428資訊網(wǎng)——每日最新資訊28at.com

下面是一個展現(xiàn)了類似問題的 C# 代碼的例子。Uf428資訊網(wǎng)——每日最新資訊28at.com

Uf428資訊網(wǎng)——每日最新資訊28at.com

在上面的例子中,調(diào)試版本記錄并吞掉了異常,而發(fā)行版本直接讓異常跳出了此函數(shù)。Uf428資訊網(wǎng)——每日最新資訊28at.com

如果你恰好也寫了這樣的代碼,發(fā)行版本和調(diào)試版本的行為方式根本不同,你最終會陷入這種情況:發(fā)行版本有一些問題,但調(diào)試版本工作正常。Uf428資訊網(wǎng)——每日最新資訊28at.com

你的客戶無法弄清楚有什么區(qū)別,因此他們切換到生產(chǎn)服務(wù)器上的調(diào)試版本。它的運行速度是原來的兩倍,內(nèi)存消耗的內(nèi)存是原來的三倍,需要大量的資源才能擴展到以前的服務(wù)級別。但這是他們能做的最好的事情,因為問題不會出現(xiàn)在調(diào)試版本上(因此無法在那里調(diào)試)。Uf428資訊網(wǎng)——每日最新資訊28at.com

我看到過關(guān)于軟件陷入這種困境的報道,這對開發(fā)人員的影響非常糟糕。Uf428資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

今天的論點也是我一直所忽視的:調(diào)試的代碼,就干調(diào)試的活,不要做其他事情,更不要修改程序執(zhí)行流程。
第二個:調(diào)試版本和發(fā)行版本可能在執(zhí)行速度,占用資源存在差異,但兩者的行為必須完全一致。Uf428資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-13343-0.html避坑:不要在調(diào)試版本中的修改程序邏輯

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 數(shù)據(jù)分析,如何助力運營?

下一篇: SQL和Python,哪個更容易自學(xué)?哪個更適合數(shù)據(jù)工作的編程新手?

標(biāo)簽:
  • 熱門焦點
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數(shù)據(jù)來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內(nèi)市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 十個可以手動編寫的 JavaScript 數(shù)組 API

    JavaScript 中有很多API,使用得當(dāng),會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結(jié)。現(xiàn)在開始吧。1.forEach()forEach()用于遍歷數(shù)組接收一參
  • SpringBoot中使用Cache提升接口性能詳解

    環(huán)境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對 Spring 應(yīng)用程序提供了透明式添加緩存的支持。和事務(wù)支持一樣,抽象緩存允許一致地使用各
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關(guān)注的互聯(lián)網(wǎng)公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁“充值中心”入口上線了本機生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • 10天營收超1億美元,《星鐵》比《原神》差在哪?

    來源:伯虎財經(jīng)作者:陳平安即便你沒玩過《原神》,你一定聽說過的它的大名。恨它的人把《原神》開服那天稱作是中國游戲史上最黑暗的一天,有粉絲因為索尼在PS平臺上線《原神》,怒而
  • 余承東:AI大模型技術(shù)的發(fā)展將會帶來下一代智能終端操作系統(tǒng)的智慧體驗

    8月4日消息,2023年華為開發(fā)者大會(HDC.Together)今天正式開幕,華為發(fā)布HarmonyOS 4、全新升級的鴻蒙開發(fā)套件、HarmonyOS Next開發(fā)者預(yù)覽版本等一系列
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀。  美國時間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內(nèi)容審核等。此前,T
Top 主站蜘蛛池模板: 临猗县| 临泉县| 樟树市| 平潭县| 化州市| 承德市| 扶余县| 嘉禾县| 永定县| 教育| 武陟县| 新疆| 门头沟区| 崇明县| 兰州市| 泸水县| 宁陵县| 江北区| 互助| 宁强县| 高陵县| 栾城县| 西吉县| 内丘县| 门头沟区| 贺兰县| 会泽县| 新龙县| 江门市| 大新县| 桂林市| 浑源县| 台北市| 临澧县| 陆川县| 新疆| 东丽区| 黔江区| 太保市| 监利县| 梅河口市|