Joyent中怎么调试Node代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联成立于2013年,我们提供高端成都网站建设、成都网站制作、成都网站设计、网站定制、网络营销推广、小程序设计、微信公众号开发、成都网站推广服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为成都砂岩浮雕企业提供源源不断的流量和订单咨询。
“Node.js使用JavaScript并具备动态特性,”他表示,“因此当大家遇到问题时,很难准确把握到底是哪里闹出了毛病。在传统应用程序当中,一旦出现崩溃状况、我们能够找到与之相关的核心文件与符号。然而在Node.js JavaScript的V8引擎当中,如果进程卡死、我们根本没有足够的信息来弄清到底是哪一步处理过程引发了故障——这是因为全部JavaScript信息都已经不复存在。作为仅有的途径,大家只能通过添加更多日志记录或者搜索现有日志来摸索问题发生的原因。”
作为***知名度的Node.js部署问题的受害者,沃尔玛对此表示有话要说。据称经过调查,沃尔玛方面竟然发现Node.js就是导致内存泄露的罪魁祸首,不过Fontaine认为这样的情况只能算是极端性个例。他同时解释称,在大多数情况下、决定事态的关键因素在于Node.js与JavaScript的实际使用方法以及环境开发人员对二者的熟悉程度。
“在Node.js的众多特性当中,最难以把握的就是它的异步本质,”Fontaine指出。“大量内容同时处于运行当中,相比之下PHP、Python以及Ruby的调试对象则只有单一进程或者每个请求中的单一线程。因此对于JavaScript而言,即使是对堆栈进行全盘追踪都不足以达成调试目标。”
为此,Joyent公司认为大多数由Node.js部署所引发的问题都属于意料之外的突发事件以及应用程序错误,而且这一切在部署流程的早期阶段中并不容易发现。
“Node设计思路所带来的一大副产品在于,”Fontaine解释道,“JavaScript是一种动态语言,因此我们并不能从编译器当中获取静态运行状态。这一点既有积极的效果、也会引发消极影响,具体取决于大家的实际开发方式。其实我们遭遇的大部分故障用例都属于很普通的应用程序漏洞,只不过我们很难重新构建运行历史、从而再现曾经引发的问题。
为了解决调试过程中面临的这一阻碍,Joyent公司将其自家SmartOS作为开发平台。SmartOS属于OpenSloaris系统的一个分支,其DTrace技术成为该平台的***特色(除了其他开发人员之外,Joyent公司CTO Brian Cantrill也参与了该技术的开发工作)。DTrace能够在几乎不影响性能表现的前提下对应用程序的执行过程进行追踪与概括,Fontaine与其他不少技术从业者都将其视为检查Node.js运行代码的理想手段。
“大家可以在代码运行过程中查看JavaScript堆栈帧,”Fontaine解释道。“在其它环境下,我们没有办法从这个层面进行检查。在其它平台上,我们必须配合特殊标来运行Node、从而获取额外调试信息,而这会给性能带来负面影响。”
“Joyent之所以能够继续延续这种处理方式,是因为我们编写了相关工具以帮助自身处理此类问题。此外,我们还积极与其他用户接触、将这些技术成果用于帮助他人。”
SmartOS本身是一款基于CDDL许可的免费系统,但大多数人显然希望能在自己已经在使用的系统平台上获得理想的调试工具——而随着Node.js向着更完善的1.0版本迈进,Joyent方面可能也正在进一步作出探索。
关于Joyent中怎么调试Node代码问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。