AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

總結(jié)

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

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

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

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

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

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 得物效率前端微應(yīng)用推進(jìn)過程與思考

    一、背景效率工程隨著業(yè)務(wù)的發(fā)展,組織規(guī)模的擴(kuò)大,越來越多的企業(yè)開始意識到協(xié)作效率對于企業(yè)團(tuán)隊(duì)的重要性,甚至是決定其在某個(gè)行業(yè)競爭中突圍的關(guān)鍵,是企業(yè)長久生存的根本。得物
  • 這款新興工具平臺,讓你的電腦效率翻倍

    隨著信息技術(shù)的發(fā)展,我們獲取信息的渠道越來越多,但是處理信息的效率卻成為一個(gè)瓶頸。于是各種工具應(yīng)運(yùn)而生,都在爭相解決我們的工作效率問題。今天我要給大家介紹一款效率
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(消息堆積)、消費(fèi) 三大塊領(lǐng)域。那接下來,我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過程。注意,如果白話中不小心提到相關(guān)代
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨(dú)家獲悉,拼多多在其APP內(nèi)上線了“本地生活”入口,位置較深,位于首頁的“充值中心”內(nèi),目前主要售賣美食相關(guān)的
  • 信通院:小米、華為等11家應(yīng)用商店基本完成APP簽名及驗(yàn)簽工作

    中國信通院表示,目前,小米、華為、OPPO、vivo、360手機(jī)助手、百度手機(jī)助手、應(yīng)用寶、豌豆莢和努比亞等9家應(yīng)用商店,以及抖音和快手2家新型應(yīng)用分發(fā)平
  • 質(zhì)感不錯(cuò)!OPPO K11渲染圖曝光:旗艦IMX890傳感器首次下放

    一直以來,OPPO K系列機(jī)型都保持著較為均衡的產(chǎn)品體驗(yàn),歷來都是2K價(jià)位的明星機(jī)型,去年推出的OPPO K10和OPPO K10 Pro兩款機(jī)型憑借各自的出色配置,堪稱有
  • 蘋果140W USB-C充電器:采用氮化鎵技術(shù)

    據(jù)10 月 30 日 9to5 Mac 消息報(bào)道,當(dāng)蘋果推出新的 MacBook Pro 2021 時(shí),該公司還推出了新的 140W USB-C 充電器,附贈在 MacBook Pro 16 英寸機(jī)型的盒子里,也支
  • 微軟發(fā)布Windows 11新版 引入全新任務(wù)欄狀態(tài)

    近日,微軟發(fā)布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務(wù)欄等,系統(tǒng)更流暢了。更新中,Windows 11加入了專門針對平板優(yōu)化的任務(wù)欄
  • 北京:科技教育體驗(yàn)基地開始登記

      北京“科技館之城”科技教育體驗(yàn)基地登記和認(rèn)證工作日前啟動(dòng)。首批北京科技教育體驗(yàn)基地?cái)M于2023年全國科普日期間掛牌,后續(xù)還將開展常態(tài)化登記。  北京科技教育體驗(yàn)基
Top