新聞中心
Joyent中怎么調(diào)試Node代碼,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)成立于2013年,我們提供高端成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣、小程序設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、成都網(wǎng)站推廣服務(wù),提供專(zhuān)業(yè)營(yíng)銷(xiāo)思路、內(nèi)容策劃、視覺(jué)設(shè)計(jì)、程序開(kāi)發(fā)來(lái)完成項(xiàng)目落地,為成都砂巖浮雕企業(yè)提供源源不斷的流量和訂單咨詢(xún)。
“Node.js使用JavaScript并具備動(dòng)態(tài)特性,”他表示,“因此當(dāng)大家遇到問(wèn)題時(shí),很難準(zhǔn)確把握到底是哪里鬧出了毛病。在傳統(tǒng)應(yīng)用程序當(dāng)中,一旦出現(xiàn)崩潰狀況、我們能夠找到與之相關(guān)的核心文件與符號(hào)。然而在Node.js JavaScript的V8引擎當(dāng)中,如果進(jìn)程卡死、我們根本沒(méi)有足夠的信息來(lái)弄清到底是哪一步處理過(guò)程引發(fā)了故障——這是因?yàn)槿縅avaScript信息都已經(jīng)不復(fù)存在。作為僅有的途徑,大家只能通過(guò)添加更多日志記錄或者搜索現(xiàn)有日志來(lái)摸索問(wèn)題發(fā)生的原因。”
作為***知名度的Node.js部署問(wèn)題的受害者,沃爾瑪對(duì)此表示有話(huà)要說(shuō)。據(jù)稱(chēng)經(jīng)過(guò)調(diào)查,沃爾瑪方面竟然發(fā)現(xiàn)Node.js就是導(dǎo)致內(nèi)存泄露的罪魁禍?zhǔn)祝贿^(guò)Fontaine認(rèn)為這樣的情況只能算是極端性個(gè)例。他同時(shí)解釋稱(chēng),在大多數(shù)情況下、決定事態(tài)的關(guān)鍵因素在于Node.js與JavaScript的實(shí)際使用方法以及環(huán)境開(kāi)發(fā)人員對(duì)二者的熟悉程度。
“在Node.js的眾多特性當(dāng)中,最難以把握的就是它的異步本質(zhì),”Fontaine指出。“大量?jī)?nèi)容同時(shí)處于運(yùn)行當(dāng)中,相比之下PHP、Python以及Ruby的調(diào)試對(duì)象則只有單一進(jìn)程或者每個(gè)請(qǐng)求中的單一線(xiàn)程。因此對(duì)于JavaScript而言,即使是對(duì)堆棧進(jìn)行全盤(pán)追蹤都不足以達(dá)成調(diào)試目標(biāo)。”
為此,Joyent公司認(rèn)為大多數(shù)由Node.js部署所引發(fā)的問(wèn)題都屬于意料之外的突發(fā)事件以及應(yīng)用程序錯(cuò)誤,而且這一切在部署流程的早期階段中并不容易發(fā)現(xiàn)。
“Node設(shè)計(jì)思路所帶來(lái)的一大副產(chǎn)品在于,”Fontaine解釋道,“JavaScript是一種動(dòng)態(tài)語(yǔ)言,因此我們并不能從編譯器當(dāng)中獲取靜態(tài)運(yùn)行狀態(tài)。這一點(diǎn)既有積極的效果、也會(huì)引發(fā)消極影響,具體取決于大家的實(shí)際開(kāi)發(fā)方式。其實(shí)我們?cè)庥龅拇蟛糠止收嫌美紝儆诤芷胀ǖ膽?yīng)用程序漏洞,只不過(guò)我們很難重新構(gòu)建運(yùn)行歷史、從而再現(xiàn)曾經(jīng)引發(fā)的問(wèn)題。
為了解決調(diào)試過(guò)程中面臨的這一阻礙,Joyent公司將其自家SmartOS作為開(kāi)發(fā)平臺(tái)。SmartOS屬于OpenSloaris系統(tǒng)的一個(gè)分支,其DTrace技術(shù)成為該平臺(tái)的***特色(除了其他開(kāi)發(fā)人員之外,Joyent公司CTO Brian Cantrill也參與了該技術(shù)的開(kāi)發(fā)工作)。DTrace能夠在幾乎不影響性能表現(xiàn)的前提下對(duì)應(yīng)用程序的執(zhí)行過(guò)程進(jìn)行追蹤與概括,F(xiàn)ontaine與其他不少技術(shù)從業(yè)者都將其視為檢查Node.js運(yùn)行代碼的理想手段。
“大家可以在代碼運(yùn)行過(guò)程中查看JavaScript堆棧幀,”Fontaine解釋道。“在其它環(huán)境下,我們沒(méi)有辦法從這個(gè)層面進(jìn)行檢查。在其它平臺(tái)上,我們必須配合特殊標(biāo)來(lái)運(yùn)行Node、從而獲取額外調(diào)試信息,而這會(huì)給性能帶來(lái)負(fù)面影響。”
“Joyent之所以能夠繼續(xù)延續(xù)這種處理方式,是因?yàn)槲覀兙帉?xiě)了相關(guān)工具以幫助自身處理此類(lèi)問(wèn)題。此外,我們還積極與其他用戶(hù)接觸、將這些技術(shù)成果用于幫助他人。”
SmartOS本身是一款基于CDDL許可的免費(fèi)系統(tǒng),但大多數(shù)人顯然希望能在自己已經(jīng)在使用的系統(tǒng)平臺(tái)上獲得理想的調(diào)試工具——而隨著Node.js向著更完善的1.0版本邁進(jìn),Joyent方面可能也正在進(jìn)一步作出探索。
關(guān)于Joyent中怎么調(diào)試Node代碼問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
本文名稱(chēng):Joyent中怎么調(diào)試Node代碼
轉(zhuǎn)載注明:http://www.ef60e0e.cn/article/jpcpsd.html