<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Neo專欄|分形調(diào)試:重新定義區(qū)塊鏈開(kāi)發(fā)者體驗(yàn)

          共 2784字,需瀏覽 6分鐘

           ·

          2020-12-13 17:29

          為了不斷提升開(kāi)發(fā)者體驗(yàn),

          Neo 是第一個(gè)將由微軟推出的時(shí)間穿越調(diào)試器(Time-Travel Debugging)提供給全球區(qū)塊鏈開(kāi)發(fā)者的平臺(tái)。

          隨著 Neo3 推出在即,

          下一個(gè)重大調(diào)試創(chuàng)新-分形調(diào)試 (Fractal Debugging) 將進(jìn)一步允許開(kāi)發(fā)者進(jìn)行跨鏈調(diào)試。

          Unix 的創(chuàng)造者 Brian Kernighan 在 C 語(yǔ)言主流化的發(fā)展中起了重要作用。他在 1974 年的杰作《編程風(fēng)格的元素》中說(shuō):“每個(gè)人都知道,調(diào)試的難度是編寫(xiě)一個(gè)程序的兩倍。因此,如果你在編寫(xiě)時(shí)足夠聰明,又何須去調(diào)試它?”

          我們意識(shí)到 Kernighan 的先見(jiàn)之明。軟件開(kāi)發(fā)人員常常會(huì)花費(fèi)多達(dá)四分之一的時(shí)間在驗(yàn)證,調(diào)試和讓軟件組件,服務(wù)及系統(tǒng)生效上;并且,質(zhì)量評(píng)估,測(cè)試,調(diào)試以及修復(fù)和維護(hù)代碼的成本通常占軟件開(kāi)發(fā)預(yù)算的三分之一或更高。

          關(guān)于調(diào)試的一些常見(jiàn)話題


          根據(jù)我們過(guò)去 70 多年為世界上最大的軟件公司之一構(gòu)建軟件工具和平臺(tái)的經(jīng)驗(yàn),在調(diào)試軟件組件,服務(wù)和系統(tǒng)方面,我們看到了專業(yè)開(kāi)發(fā)人員老生常談的三個(gè)問(wèn)題。

          首先,定位并理解代碼錯(cuò)誤是有一定難度的。在捕捉和呈現(xiàn)生產(chǎn)系統(tǒng)中或故障期間產(chǎn)生的事件方面,主流軟件生態(tài)系統(tǒng)的能力不斷提高。在生產(chǎn)場(chǎng)景,安全警示和系統(tǒng)性能約束相關(guān)的應(yīng)用中,我們用于捕捉和定位代碼錯(cuò)誤的工具將會(huì)逐步得到改良。

          其次,由于從日志中捕獲信息的需求越來(lái)越多,我們對(duì)日志流和文件分析的支持進(jìn)行了增強(qiáng)。此處的關(guān)鍵是從分析中獲取并提供有關(guān)項(xiàng)目狀態(tài)的增強(qiáng)關(guān)聯(lián)信息。這些工具對(duì)于信息匯總協(xié)調(diào)的越好,開(kāi)發(fā)人員的生產(chǎn)效率就越高。

          第三,俗稱反向調(diào)試器(Backward debugger)的概念,即允許用戶在執(zhí)行模式中倒退一步,并理解和利用類似于視頻記錄的“歷史”。微軟在主流軟件行業(yè)率先推出了時(shí)間穿越調(diào)試器(Time-Travel Debugging),而 Neo 是第一個(gè)將其提供給全球區(qū)塊鏈開(kāi)發(fā)人員的平臺(tái)

          時(shí)間穿越調(diào)試器


          Neo 智能合約調(diào)試器如何提高區(qū)塊鏈行業(yè)的標(biāo)準(zhǔn)?

          區(qū)塊鏈平臺(tái)可實(shí)現(xiàn)強(qiáng)大的新概念,同時(shí)也為開(kāi)發(fā)人員帶來(lái)了獨(dú)特的挑戰(zhàn)。狀態(tài)機(jī)可以出現(xiàn)完全精確錯(cuò)誤(perfectly accurate mistakes);代碼畢竟是由人為編寫(xiě),出現(xiàn)程序錯(cuò)誤是難免的。然而,正如熟悉 DAO 的人所知,由于底層分類帳的不可變性,區(qū)塊鏈上的錯(cuò)誤會(huì)產(chǎn)生巨大的影響。

          通常來(lái)說(shuō),日志可以有效地為我們指明實(shí)際問(wèn)題,并且我們擅長(zhǎng)發(fā)現(xiàn)日志中的異常和錯(cuò)誤。但是,日志最多只能解決一半的問(wèn)題。日志好比將“面包屑“留給開(kāi)發(fā)人員作為線索,并且樂(lè)觀地希望是它們足以為開(kāi)發(fā)人員提供指引,以預(yù)測(cè)在主網(wǎng)中代碼執(zhí)行的各種情況。

          然后,開(kāi)發(fā)人員根據(jù)有關(guān)實(shí)際問(wèn)題的標(biāo)志信息來(lái)進(jìn)行定向,然后在一個(gè)緊密的內(nèi)部循環(huán)中進(jìn)行設(shè)置,該循環(huán)包括設(shè)置斷點(diǎn),運(yùn)行光標(biāo),進(jìn)入和退出方法。在這個(gè)軟件考古學(xué)周期中要花費(fèi)數(shù)小時(shí)甚至數(shù)天的時(shí)間。但是,一旦在測(cè)試網(wǎng)或主網(wǎng)中出現(xiàn)一個(gè)新的相對(duì)復(fù)雜的問(wèn)題,我們就會(huì)被迫回到原點(diǎn)。

          現(xiàn)在,更糟的是,代碼中通常存在一些隱蔽的錯(cuò)誤,其中可觀察到的效果通常在時(shí)間和/或空間上與故障的位置偏離。在這一點(diǎn)上,傳統(tǒng)方法是以“但是,它可以在我的機(jī)器上可以正常運(yùn)作……”而告終。

          時(shí)間穿越調(diào)試使開(kāi)發(fā)人員可以輕松地在代碼執(zhí)行過(guò)程中前進(jìn)或倒退,不僅可以使開(kāi)發(fā)人員加深對(duì)內(nèi)容的了解,也便于檢查導(dǎo)致錯(cuò)誤的每個(gè)可能步驟并找出代碼問(wèn)題的最佳解決方案,大大簡(jiǎn)化調(diào)試過(guò)程。

          時(shí)間穿越調(diào)試通過(guò)允許開(kāi)發(fā)人員在區(qū)塊鏈上記錄正在運(yùn)行的代碼的執(zhí)行情況,不用考慮過(guò)去或?qū)?lái)而重新運(yùn)行代碼,從而加速了開(kāi)發(fā)人員的編輯,編譯,構(gòu)建和調(diào)試循環(huán);它通過(guò)捕獲跟蹤文件中的代碼執(zhí)行來(lái)盡可能減少開(kāi)銷,從而高效地做到這點(diǎn)。

          分形調(diào)試(Fractal Debugging)


          現(xiàn)在,Neo 智能合約調(diào)試器會(huì)重新定義區(qū)塊鏈行業(yè)的編程調(diào)試。

          沒(méi)有哪個(gè)系統(tǒng)是完全獨(dú)立的;同理,也沒(méi)有哪條區(qū)塊鏈可以做到完全獨(dú)立。在公鏈領(lǐng)域,各個(gè)項(xiàng)目追求的目標(biāo)有時(shí)是共通的,涉及規(guī)模,可擴(kuò)展性,安全性,隱私,經(jīng)濟(jì)模型,治理結(jié)構(gòu)等。在私有鏈和聯(lián)盟鏈領(lǐng)域,長(zhǎng)期存在的異構(gòu)性和互操作性驅(qū)動(dòng)著技術(shù)和鏈棧(chain stacks)的多樣性。

          通常來(lái)說(shuō),跨鏈方案包含需要訪問(wèn)外部數(shù)據(jù)源(例如 Neo3 內(nèi)置 Oracle)和其他網(wǎng)絡(luò)資源(例如 Neo3 內(nèi)置 NeoFS)的用例。在這些情況下,“跨鏈”調(diào)試的能力變得至關(guān)重要。

          在學(xué)術(shù)界,模型檢查(Model Checking)和相關(guān)的定理證明方法(Theorem-proving approaches)已經(jīng)成為調(diào)試分布式系統(tǒng)的兩個(gè)重要研究領(lǐng)域。模型檢查是一個(gè)詳盡的分析過(guò)程:它有兩個(gè)子類別,符號(hào)模型檢查代表并探索了使用抽象數(shù)學(xué)的可能執(zhí)行方式,而形式化模型檢查則著重于程序執(zhí)行。

          但是,這些方法的有效性在實(shí)際建模和擴(kuò)展性方面受到限制,使其無(wú)法從學(xué)術(shù)層面直接應(yīng)用到生產(chǎn)系統(tǒng)領(lǐng)域。定理證明可以證明分布式系統(tǒng)沒(méi)有任何故障(或限制故障范圍)。但是,這些技術(shù)無(wú)法擴(kuò)展到實(shí)踐中。

          通過(guò)我們的分形調(diào)試方法,為了實(shí)現(xiàn)跨鏈方案,我們采用了多管齊下的方法,涵蓋了追蹤,日志分析以及時(shí)間穿越調(diào)試和可視化。

          跟蹤可以追查通過(guò)系統(tǒng),跨協(xié)議的信息和數(shù)據(jù);對(duì)子系統(tǒng)進(jìn)行檢測(cè),以收集和整理多個(gè)交叉點(diǎn)處的預(yù)定義指標(biāo),跨鏈視圖的數(shù)據(jù)和多個(gè)執(zhí)行實(shí)例的情報(bào)。跟蹤的先決條件是檢測(cè)協(xié)議,功能等。

          在基礎(chǔ)協(xié)議和/或功能對(duì)儀器構(gòu)成約束的情況下,應(yīng)用互補(bǔ)的輕量級(jí)日志分析。這種黑匣子方法能夠提供跨越各種來(lái)源的詳細(xì)數(shù)據(jù)。關(guān)鍵是使用開(kāi)發(fā)人員熟悉的調(diào)試范例,使其便于開(kāi)發(fā)人員使用。

          最后,如前所述,時(shí)間穿越調(diào)試獲取了執(zhí)行方案,以便以后可以重演該方案的特定實(shí)例;在調(diào)試不確定性行為時(shí)特別有用。時(shí)間穿越調(diào)試與可視化技術(shù)相結(jié)合,結(jié)合了跟蹤和日志分析,使開(kāi)發(fā)人員可以更好地理解“跨鏈”。

          聚焦跨鏈開(kāi)發(fā)效率


          編程使人考量思考的模式,而在調(diào)試代碼讓人提升學(xué)習(xí)的方法。本著這種精神,我們發(fā)布了 Neo 智能合約調(diào)試器的第一個(gè)版本,并且我們將繼續(xù)專注于為開(kāi)發(fā)者提供區(qū)塊鏈行業(yè)中一流的調(diào)試工具。

          我們的目標(biāo)是繼續(xù)提高開(kāi)發(fā)人員的編碼體驗(yàn),并推動(dòng)包括 Oracle,F(xiàn)S 等在內(nèi)的跨鏈開(kāi)發(fā)方案不斷前進(jìn)。隨著 Neo3 發(fā)布的臨近,Neo 智能合約調(diào)試器的增強(qiáng)功能也即將推出,我們期待為全球的開(kāi)發(fā)人員提供跨鏈場(chǎng)景下的分形調(diào)試。

          ?「Neo 智能合約調(diào)試器」下載鏈接?

          https://marketplace.visualstudio.com/items?itemName=ngd-seattle.neo-contract-debug

          瀏覽 32
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  伊人五月婷久久 | 狠狠撸天天撸 | 人人射视频 | 搞搞香蕉影| 免费无码一区 |