上期教程己經(jīng)學(xué)習(xí)了如何完成一個(gè) web add-ins 插件,本期就總結(jié)一下如何調(diào)試插件。其實(shí)上期教程中己經(jīng)用到了一種。一共有三種方法可用于調(diào)試:
通過(guò)將清單發(fā)布到 Office Online
通過(guò)將清單發(fā)布到網(wǎng)絡(luò)文件共享
使用 sideload 命令進(jìn)行測(cè)試
從方便和測(cè)試效果綜合來(lái)看,推薦使用 sideload 方法來(lái)做測(cè)試,簡(jiǎn)單易行且效果最好。
Office Online
【適合范圍】
此方法需要在 Office Online 中操作,不適用于在 Windows上 運(yùn)行測(cè)試。
【操作流程】
打開(kāi)瀏覽輸入 office365.com 網(wǎng)址;
輸入用戶(hù)名、密碼并登錄帳戶(hù);
在左上角的Office菜單上,單擊Excel;
找到 Excel 模板選擇空模板打開(kāi);
在“插入”菜單上,單擊“Office加載項(xiàng)”,在對(duì)話框的右上角,單擊“上載我的加載項(xiàng)”。
單擊“瀏覽”,上傳清單文件(比如:colorful-patterns--manifest.xml);
加載項(xiàng)現(xiàn)在將加載到“主頁(yè)”選項(xiàng)卡上,切換到該選項(xiàng)卡,然后按“顯示任務(wù)窗格”。
Office Online 中出現(xiàn)插件TaskPan。
網(wǎng)絡(luò)文件共享
【適合范圍】
此方法僅適用于在Windows上運(yùn)行的Excel,Word和PowerPoint加載項(xiàng); 并且僅適用于使用yo office工具創(chuàng)建并且在package.json文件sideload的scripts部分中具有腳本的加載項(xiàng)。(@1.1.5及以下的 office 模板創(chuàng)建的項(xiàng)目也沒(méi)有此腳本)
【設(shè)置目錄共享】
1、轉(zhuǎn)到項(xiàng)目所在文件夾的目錄;
2、選中目錄鼠標(biāo)右鍵設(shè)置文件夾共享;
3、復(fù)制共享目錄備用;
【設(shè)置Office信任】
1、將文件夾的完整網(wǎng)絡(luò)路徑輸入“ 目錄URL”框后,選擇“ 添加目錄”按鈕;
2、選中新添加項(xiàng)目的“在菜單中顯示”復(fù)選框。
【設(shè)置Office信任】
1、打開(kāi) Excel 文件,插入-->我的加載項(xiàng);
2、出現(xiàn)添加共享目錄所在的項(xiàng)目,選中點(diǎn)擊添加。
著Excel中會(huì)出現(xiàn)方加載項(xiàng)的TaskPan按鈕
sideload
【適合范圍】
如果項(xiàng)目是使用 Visual Studio 創(chuàng)建的,或者VSCode 使用較早的 Office 模板而沒(méi)有 sideload 腳本,則可以使用這種方法來(lái)達(dá)到與 sideload 相似的效果。
【操作流程】
1、以管理員身份打開(kāi)命令提示符。
2、將目錄更改為加載項(xiàng)項(xiàng)目文件夾的根目錄。
3、運(yùn)行以下命令以在端口3000上啟動(dòng)本地Web服務(wù)器實(shí)例以提供加載項(xiàng)項(xiàng)目:
npm run start
4、以管理員身份打開(kāi)第二個(gè)命令提示符。
5、將目錄更改為加載項(xiàng)項(xiàng)目文件夾的根目錄。
6、運(yùn)行以下命令以引導(dǎo)主機(jī)應(yīng)用程序(例如Excel,Word)并在主機(jī)應(yīng)用程序中注冊(cè)您的加載項(xiàng):
npm run sideload
接著會(huì)自動(dòng)啟動(dòng)桌面Excel并加載該插件。
附加調(diào)試器
【適合范圍】
附加調(diào)試器功能將直接將調(diào)試器附加到正確的Internet Explorer進(jìn)程。無(wú)論您使用的是Yeoman Generator,Visual Studio Code,node.js,Angular還是其他工具,都可以附加調(diào)試器。
1、在Office 2016 for Windows 的較高版本中,可以從任務(wù)窗格附加調(diào)試器;
2、前提是電腦上己經(jīng)裝有 Visual Studio 2015 或更高版本;
3、只適用于桌面加載的插件,也就是后兩種調(diào)試模式。
【操作流程】
要啟動(dòng)“ 附加調(diào)試器”工具,請(qǐng)選擇任務(wù)窗格的右上角以激活“ 個(gè)性”菜單(如下圖中的紅色圓圈所示)。選擇Attach Debugger。這將啟動(dòng)Visual Studio實(shí)時(shí)調(diào)試器對(duì)話框,如下圖所示。
在Visual Studio中,您將在解決方案資源管理器中看到代碼文件。您可以將斷點(diǎn)設(shè)置為要在Visual Studio中調(diào)試的代碼行。
F12工具
【適合范圍】
Windows 10中包含的F12開(kāi)發(fā)人員工具可幫助您調(diào)試,測(cè)試和加速網(wǎng)頁(yè)。如果您沒(méi)有使用像Visual Studio這樣的IDE,或者您需要在IDE外部運(yùn)行加載項(xiàng)時(shí)調(diào)查問(wèn)題,也可以使用它們來(lái)開(kāi)發(fā)和調(diào)試Office加載項(xiàng)。
1、只能用于 Windows 10 平臺(tái)
2、只能用于桌面 Office 程序
【操作流程】
1、啟動(dòng)與您的Office版本對(duì)應(yīng)的F12開(kāi)發(fā)工具:
C:\Windows\SysWOW64\F12.IEChooser.exe
3、F12調(diào)試工具(本次不展開(kāi)了)
目錄序列
Script Lab 01:快速Office 365開(kāi)發(fā)工具
Script Lab 02:Script Lab,知識(shí)儲(chǔ)備
Script Lab 03:Script Lab,啟動(dòng)函數(shù),Excel基礎(chǔ)操作(1)
Script Lab 04:Script Lab,九九乘法表,Excel基礎(chǔ)操作(2)
Script Lab 05:Office JavaScript API助手,Excel基礎(chǔ)操作(3)
Script Lab 06:事件處理,Excel基礎(chǔ)操作(4)
Script Lab 07:引入控件,Excel基礎(chǔ)操作(5)
Script Lab 08:?jiǎn)卧~“卡拉OK”,Word基礎(chǔ)操作
Script Lab 09:異步調(diào)用函數(shù),PowerPoint基礎(chǔ)操作
Script Lab 10:為Officejs開(kāi)發(fā)配置VSCode環(huán)境
Script Lab 11:OIfficeJS的三種調(diào)試方式
者:basinwang,騰訊 PCG 前端開(kāi)發(fā)工程師
大型項(xiàng)目容易遇到性能問(wèn)題,一般來(lái)說(shuō),當(dāng)我們遇到性能瓶頸的時(shí)候,才會(huì)開(kāi)始去進(jìn)行相應(yīng)的分析。分析的方向除了業(yè)務(wù)本身的特點(diǎn)相關(guān)之外,常見(jiàn)的還可以借助一些工具來(lái)發(fā)現(xiàn)問(wèn)題。本文主要介紹前端性能分析可以怎么走~
一般來(lái)說(shuō),前端的性能分析通??梢詮?strong>時(shí)間和空間兩個(gè)角度來(lái)進(jìn)行:
那么,下面來(lái)看看有哪些常見(jiàn)的工具可以借來(lái)用用。由于我們的網(wǎng)頁(yè)基本上跑在瀏覽器中,所以基本上大多數(shù)的工具都來(lái)源于瀏覽器自身提供,首選工具自然是 Chrome DevTools。本文我們也主要圍繞 Chrome DevTools 來(lái)進(jìn)行說(shuō)明。
Lighthouse 的前身是 Chrome DevTools 面板中的 Audits。在 Chrome 60 之前的版本中, 這個(gè)面板只包含網(wǎng)絡(luò)使用率和頁(yè)面性能兩個(gè)測(cè)量類(lèi)別,從 Chrome 60 版本開(kāi)始, Audits 面板已經(jīng)被 Lighthouse 的集成版取代。而在最新版本的 Chrome 中,則需要單獨(dú)安裝 Lighthouse 拓展程序來(lái)使用,也可以通過(guò)腳本來(lái)使用。
Lighthouse 架構(gòu)
下面是 Lighthouse 的組成部分:
Lighthouse 會(huì)在一系列的測(cè)試下運(yùn)行網(wǎng)頁(yè),比如不同尺寸的設(shè)備和不同的網(wǎng)絡(luò)速度。它還會(huì)檢查頁(yè)面對(duì)輔助功能指南的一致性,例如顏色對(duì)比度和 ARIA 最佳實(shí)踐。
在比較短的時(shí)間內(nèi),Lighthouse 可以給出這樣一份報(bào)告(可將報(bào)告生成為 JSON 或 HTML):
Lighthouse 架構(gòu)
這份報(bào)告從 5 個(gè)方面來(lái)分析頁(yè)面:性能、輔助功能、最佳實(shí)踐、搜索引擎優(yōu)化和 PWA。像性能方面,會(huì)給出一些常見(jiàn)的耗時(shí)統(tǒng)計(jì)。除此以外,還會(huì)給到一些詳細(xì)的優(yōu)化方向。
如果你希望短時(shí)間內(nèi)對(duì)你的網(wǎng)站進(jìn)行較全面的評(píng)估,可以使用 Lighthouse 來(lái)跑一下分?jǐn)?shù),確定大致的優(yōu)化方向。
Performance 面板同樣有個(gè)前身,叫 Timeline。該面板用于記錄和分析運(yùn)行時(shí)性能,運(yùn)行時(shí)性能是頁(yè)面運(yùn)行時(shí)(而不是加載)的性能。
Performance 面板功能特別多,具體的分析也可以單獨(dú)講一篇了。這里我們簡(jiǎn)單說(shuō)一下使用的步驟:
關(guān)于 Performance 怎么使用的文章特別多,大家網(wǎng)上隨便搜一下就能搜到。一般來(lái)說(shuō),主要使用以下功能:
具體要怎么定位某些性能瓶頸,可以參考官方文檔系列文章,這里就不詳細(xì)介紹啦。
打開(kāi) Chrome 控制臺(tái)后,按組合鍵ctrl + p(Mac 快捷鍵為command + p),輸入> Show Performance Monitor,就可以打開(kāi) Performance Monitor 性能監(jiān)視器。主要的監(jiān)控指標(biāo)包括:
大多數(shù)情況下,我們?cè)谶M(jìn)行性能優(yōu)化的時(shí)候,使用上面一些工具也足以確定大致的優(yōu)化方向。更多的細(xì)節(jié)和案例,就不在這里詳述了。
除了具體的性能分析和定位,我們也經(jīng)常需要對(duì)業(yè)務(wù)進(jìn)行性能監(jiān)控。前端性能監(jiān)控包括兩種方式:合成監(jiān)控(Synthetic Monitoring,SYN)、真實(shí)用戶(hù)監(jiān)控(Real User Monitoring,RUM)。
合成監(jiān)控就是在一個(gè)模擬場(chǎng)景里,去提交一個(gè)需要做性能審計(jì)的頁(yè)面,通過(guò)一系列的工具、規(guī)則去運(yùn)行你的頁(yè)面,提取一些性能指標(biāo),得出一個(gè)審計(jì)報(bào)告。例如上面介紹的 Lighthouse 就是合成監(jiān)控。
合成監(jiān)控的使用場(chǎng)景不多,一般可能出現(xiàn)在開(kāi)發(fā)和測(cè)試的過(guò)程中,例如結(jié)合流水線跑性能報(bào)告、定位性能問(wèn)題時(shí)本地跑的一些簡(jiǎn)單任務(wù)分析等。該方式的優(yōu)點(diǎn)顯而易見(jiàn):
真實(shí)用戶(hù)監(jiān)控,就是用戶(hù)在我們的頁(yè)面上訪問(wèn),訪問(wèn)之后就會(huì)產(chǎn)生各種各樣的性能指標(biāo)。我們?cè)谟脩?hù)訪問(wèn)結(jié)束的時(shí)候,把這些性能指標(biāo)上傳到我們的日志服務(wù)器上,進(jìn)行數(shù)據(jù)的提取清洗加工,最后在我們的監(jiān)控平臺(tái)上進(jìn)行展示的一個(gè)過(guò)程。
我們提及前端監(jiān)控的時(shí)候,大多數(shù)都包括了真實(shí)用戶(hù)監(jiān)控。常見(jiàn)的一些性能監(jiān)控包括加載耗時(shí)、DOM 渲染耗時(shí)、接口耗時(shí)統(tǒng)計(jì)等,而對(duì)于頁(yè)面加載過(guò)程,可以看到它被定義成了很多個(gè)階段:
RUM 性能模型
而我們要做的,則是在力所能及的地方進(jìn)行打點(diǎn)、計(jì)算、采集、上報(bào),該過(guò)程常常需要借助 Performance Timeline API。將需要的數(shù)據(jù)發(fā)送到服務(wù)端,然后再對(duì)這些數(shù)據(jù)進(jìn)行處理,最終通過(guò)可視化等方式進(jìn)行監(jiān)控。因此,真實(shí)用戶(hù)監(jiān)控往往需要結(jié)合業(yè)務(wù)本身的前后端架構(gòu)設(shè)計(jì)來(lái)建設(shè),其優(yōu)點(diǎn)也比較容易理解:
對(duì)比合成監(jiān)控,真實(shí)用戶(hù)監(jiān)控在有些場(chǎng)景下無(wú)法拿到更多的性能分析數(shù)據(jù)(例如具體哪里 CPU 占用、內(nèi)存占用高),因此更多情況下作為優(yōu)化效果來(lái)參考。這些情況下,具體的分析和定位可能還是得依賴(lài)合成監(jiān)控。
但真實(shí)用戶(hù)監(jiān)控也有自身的優(yōu)勢(shì),例如 TCP、DNS 連接耗時(shí)過(guò)高,在各種環(huán)境下的一些運(yùn)行耗時(shí)問(wèn)題,合成監(jiān)控是很難發(fā)現(xiàn)的。
我們?cè)陂_(kāi)發(fā)過(guò)程中,也常常需要進(jìn)行性能分析。而前端的性能分析上手成本也不低,除了基本的頁(yè)面加載耗時(shí)、網(wǎng)絡(luò)耗時(shí),更具體的定位往往需要結(jié)合前面介紹的 Performance 面板、FPS、CPU、火焰圖等一點(diǎn)點(diǎn)來(lái)分析。
如果這一塊想要往自動(dòng)化方向發(fā)展,我們可以怎么做呢?
前面也有介紹 Lighthouse,它提供了腳本的方式使用。因此,我們可以通過(guò)自動(dòng)化任務(wù)跑腳本的方式,使用 Lighthouse 跑分析報(bào)告,通過(guò)對(duì)比以往的數(shù)據(jù)來(lái)進(jìn)行功能變更、性能優(yōu)化等場(chǎng)景的性能回歸。
使用 Lighthouse 的優(yōu)勢(shì)在于開(kāi)發(fā)成本低,只需要按照官方提供的配置來(lái)調(diào)整、獲取自己需要的一些數(shù)據(jù),就可以快速接入較全面的 Lighthouse 擁有的性能分析能力。
不過(guò)由于 Lighthouse 同樣基于 CDP(Chrome DevTools Protocol),因此除了實(shí)現(xiàn)成本降低了,CDP 缺失的一些能力它也一樣會(huì)缺失。
Chrome DevTools Protocol 允許第三方對(duì)基于 Chrome 的 Web 應(yīng)用程序進(jìn)行檢測(cè)、檢查、調(diào)試、分析等。有了這個(gè)協(xié)議,我們就可以自己開(kāi)發(fā)工具獲取 Chrome 的數(shù)據(jù)了。
Chrome DevTools 協(xié)議基于 WebSocket,利用 WebSocket 建立連接 DevTools 和瀏覽器內(nèi)核的快速數(shù)據(jù)通道。
我們使用的 Chrome DevTools 其實(shí)也是一個(gè) Web 應(yīng)用。我們使用 DevTools 的時(shí)候,瀏覽器內(nèi)核 Chromium 本身會(huì)作為一個(gè)服務(wù)端,我們看到的瀏覽器調(diào)試工具界面,通過(guò) Websocket 和 Chromium 進(jìn)行通信。建立過(guò)程如下:
同樣的,當(dāng)我們通過(guò) DevTools 從 Windows、Mac 或 Linux 計(jì)算機(jī)遠(yuǎn)程調(diào)試 Android 設(shè)備上的實(shí)時(shí)內(nèi)容時(shí),使用的也是該協(xié)議。當(dāng) Chromium 以一個(gè)--remote-debugging-port=0標(biāo)志啟動(dòng)時(shí),它將啟動(dòng) Chrome DevTools 協(xié)議服務(wù)器。
Chrome DevTools 協(xié)議具有與瀏覽器的許多不同部分(例如頁(yè)面、Service Worker 和擴(kuò)展程序)進(jìn)行交互的 API。該協(xié)議把不同的操作劃分為了不同的域(domain),每個(gè)域負(fù)責(zé)不同的功能模塊。比如DOM、Debugger、Network、Console和Performance等,可以理解為 DevTools 中的不同功能模塊。
使用該協(xié)議我們可以:
本文講性能分析相關(guān),因此這里我們只關(guān)注和性能相關(guān)的域。
1. Performance。從Performance域中Performance.getMetrics()可以拿到獲取運(yùn)行時(shí)性能指標(biāo)包括:
2. Tracing。Tracing域可獲取頁(yè)面加載的 DevTools 性能跟蹤。可以使用Tracing.start和Tracing.stop創(chuàng)建可在 Chrome DevTools 或時(shí)間軸查看器中打開(kāi)的跟蹤文件。
我們能看到生成的 JSON 文件長(zhǎng)這樣:
這樣的 JSON 文件,我們可以丟到 DevTools Timeline Viewer 中,可以看到對(duì)應(yīng)的時(shí)間軸和火焰圖:
3. Runtime。Runtime域通過(guò)遠(yuǎn)程評(píng)估和鏡像對(duì)象暴露 JavaScript 的運(yùn)行時(shí)。可以通過(guò)Runtime.getHeapUsage獲取 JavaScript 棧的使用情況,通過(guò)Runtime.evaluate計(jì)算全局對(duì)象的表達(dá)式,通過(guò)Runtime.queryObjects迭代 JavaScript 棧并查找具有給定原型的所有對(duì)象(可用于計(jì)算原型鏈中某處具有相同原型的所有對(duì)象,衡量 JavaScript 內(nèi)存泄漏)。
除了上面介紹的這些,還有Network可以分析網(wǎng)絡(luò)相關(guān)的性能,以及其他可能涉及 DOM 節(jié)點(diǎn)、JS 執(zhí)行等各種各樣的數(shù)據(jù)分析,更多的可能需要大家自己去研究了。
通過(guò)使用 Chrome DevTools 協(xié)議,我們可以獲取 DevTools 提供的很多數(shù)據(jù),包括網(wǎng)絡(luò)數(shù)據(jù)、性能數(shù)據(jù)、運(yùn)行時(shí)數(shù)據(jù)。
對(duì)于如何使用該協(xié)議,其實(shí)已經(jīng)有很多大神針對(duì)這個(gè)協(xié)議封裝出不同語(yǔ)言的庫(kù),包括 Node.js、Python、Java 等,可以根據(jù)需要在 awesome-chrome-devtools 這個(gè)項(xiàng)目中找到。
至于我們到底能拿到怎樣的數(shù)據(jù),可以做到怎樣的自動(dòng)化程度,就不在本文里講述啦,后面有機(jī)會(huì)再開(kāi)篇文章詳細(xì)講講。
參考
碼調(diào)試時(shí),工具很重要,因?yàn)槟撤N程度上,它能決定我們是否可以快速修復(fù)代碼中的問(wèn)題。以前,調(diào)試頗具挑戰(zhàn)。由于缺乏可靠的調(diào)試器,開(kāi)發(fā)人員不得不使用一些特殊技巧。
例如,在調(diào)試移動(dòng)應(yīng)用和 Web 站點(diǎn)時(shí),你需要在桌面電腦上重現(xiàn)問(wèn)題,然后使用 Chrome 開(kāi)發(fā)者工具或其他類(lèi)似的工具集。但是,這些技巧并不是那么有效,你必須要在桌面瀏覽器和移動(dòng)設(shè)備間不斷切換。而今天,我們有了一個(gè)強(qiáng)大的工具套件,它允許我們就像運(yùn)行本地應(yīng)用那樣在不同的設(shè)備上調(diào)試有缺陷的代碼。最重要的是,這些遠(yuǎn)程調(diào)試工具不僅解決了調(diào)試方面所面臨的挑戰(zhàn),還加強(qiáng)了開(kāi)發(fā)團(tuán)隊(duì)間的協(xié)作。
Rookout 是一個(gè)創(chuàng)新性的工具,它提升了調(diào)試過(guò)程的敏捷性。它可以調(diào)試 serverless 和容器化應(yīng)用中的 JVM、Node.JS 和 Python 代碼。
Rookout 非常棒的一點(diǎn)在于它允許用戶(hù)快速且安全地調(diào)試 staging 和生產(chǎn)環(huán)境的應(yīng)用。它能夠在幾秒鐘之內(nèi)提供所有需要的數(shù)據(jù),消除了冗長(zhǎng)和復(fù)雜的調(diào)試過(guò)程。
Rookout 能夠按需提供數(shù)據(jù),確保了開(kāi)發(fā)人員可以理解和調(diào)試代碼中所存在的問(wèn)題,不需要編碼、重新部署和重新啟動(dòng)他們的應(yīng)用。
借助 Rookout,我們可以遠(yuǎn)程調(diào)試實(shí)時(shí)的 Electron 應(yīng)用。Rookout 的可共享接口允許開(kāi)發(fā)者在棘手的 Electron 應(yīng)用程序中設(shè)置不間斷的斷點(diǎn)(與常規(guī)端點(diǎn)類(lèi)似,只不過(guò)這種端點(diǎn)不接觸代碼,能夠讓我們?cè)诓煌V够蛑袛鄳?yīng)用的情況下,獲取代碼中的數(shù)據(jù))。
借助該工具,我們可以完整地看到應(yīng)用的性能,這樣就可以跟蹤問(wèn)題并開(kāi)發(fā)對(duì)應(yīng)的修復(fù)程序。Rookout 能夠讓這一切變成現(xiàn)實(shí),而且不需要在終端用戶(hù)上安裝任何額外的軟件。
Visual Studio Code 始終是每個(gè)使用.NET 開(kāi)發(fā)人員的首選。它有大量的特性來(lái)實(shí)現(xiàn)本地和遠(yuǎn)程調(diào)試。借助該工具,我們可以設(shè)置條件端點(diǎn)和日志點(diǎn)。
它還允許我們探查變量。對(duì)于遠(yuǎn)程調(diào)試,我們需要安裝 VS code 遠(yuǎn)程開(kāi)發(fā)擴(kuò)展包。這個(gè)包有三個(gè)擴(kuò)展,它們提供了啟動(dòng)、監(jiān)控和加速遠(yuǎn)程調(diào)試循環(huán)的所有內(nèi)容。
RubyMine 是一個(gè)強(qiáng)大的、智能的跨平臺(tái) IDE,它允許我們調(diào)試 Ruby on Rails、CoffeeScript、JavaScript、CSS、ERB 和 HAML 等,其優(yōu)秀的內(nèi)置調(diào)試器允許我們輕松地設(shè)置斷點(diǎn)和定義命中條件。
JetBrains 的 RubyMine 提供了兩種方式來(lái)調(diào)試在遠(yuǎn)程設(shè)備上運(yùn)行的應(yīng)用。首先,你可以添加遠(yuǎn)程 Ruby 解釋器并配置本地和遠(yuǎn)程項(xiàng)目文件的映射,然后啟動(dòng)調(diào)試會(huì)話。
或者,你也可以在遠(yuǎn)程設(shè)備上運(yùn)行應(yīng)用,然后添加 Ruby 解釋器。
完成之后,配置文件之間的映射并綁定到運(yùn)行中的進(jìn)程上。在調(diào)試無(wú)法在 IDE 直接啟動(dòng)的應(yīng)用時(shí),這一點(diǎn)尤為重要。
這個(gè)工具另外很棒的一點(diǎn)在于它允許我們同時(shí)啟動(dòng)多個(gè)調(diào)試進(jìn)程。
PyCharm 是 JetBrains 為 Python 開(kāi)發(fā)的一個(gè)健壯的 IDE。這個(gè)智能的代碼編輯器提供了遠(yuǎn)程開(kāi)發(fā)的功能,包括在虛擬機(jī)和遠(yuǎn)程主機(jī)上運(yùn)行、測(cè)試、調(diào)試和部署應(yīng)用的能力。
調(diào)試器提供了多種斷點(diǎn)、幀視圖、監(jiān)視、步進(jìn)模式、遠(yuǎn)程解釋器以及一個(gè)調(diào)試控制臺(tái)。
PyCharm 提供了很多令人驚嘆的特性,包括復(fù)雜場(chǎng)景的自動(dòng)完成、優(yōu)秀的重構(gòu)支持以及與其他工具的無(wú)縫集成,如 Django、IPython、Docker、Vagrant 和 Pytest。
除此之外,PyCharm 還是一個(gè)非常棒的跨平臺(tái)開(kāi)發(fā)工具。除了 Python,它還支持 JavaScript、Cython、CoffeeScript、TypeScript、SQL、HTML/CSS、Node.js、AngularJS 等。
GDB 可以高效地調(diào)試另外一臺(tái)機(jī)器上的程序。為了進(jìn)行遠(yuǎn)程調(diào)試,我們需要在宿主機(jī)上運(yùn)行 GDB 工具。另外,需要在目標(biāo)系統(tǒng)上運(yùn)行 gdbserver,這樣兩個(gè)工具就可以通過(guò)網(wǎng)絡(luò)或者 GDB 遠(yuǎn)程序列化協(xié)議的 serial line 進(jìn)行通信。
GDB/gdbserver 的遠(yuǎn)程調(diào)試有兩個(gè)配置選項(xiàng)。首先,涉及到使用遠(yuǎn)程 GDB 自動(dòng)構(gòu)建并上傳應(yīng)用代碼到遠(yuǎn)程機(jī)器。
第二個(gè)選項(xiàng)是在應(yīng)該使用可執(zhí)行文件的地方,使用 GDB 的遠(yuǎn)程調(diào)試功能。
Eclipse 是一個(gè)適用于 Java 開(kāi)發(fā)的知名 IDE,同時(shí)還支持 Python、Ruby、C#和 PHP 等語(yǔ)言。Eclipse IDE 具有開(kāi)發(fā)和調(diào)試的高級(jí)特性,使其成為一個(gè)全面的工具。
Eclipse 最令人印象深刻的特性之一就是平臺(tái)的調(diào)試視圖,它能夠展現(xiàn)詳細(xì)的調(diào)試信息,如斷點(diǎn)、變量、調(diào)用棧以及線程。
借助 Eclipse,我們可以單步執(zhí)行程序、掛起和恢復(fù)線程、計(jì)算表達(dá)式以及探查表達(dá)式的值。在 Eclipse 上管理遠(yuǎn)程調(diào)試配置非常簡(jiǎn)單直接,這使得該工具在開(kāi)發(fā)者中更受歡迎。
Zend Studio 是一個(gè)專(zhuān)業(yè)的 IDE,支持 PHP 代碼的編輯、測(cè)試、調(diào)試等功能。
它與 Zend Server 進(jìn)行了緊密的集成,因此創(chuàng)建了一個(gè)完整的 PHP 環(huán)境,可以更容易地分析在 staging 和生產(chǎn)環(huán)境中探測(cè)到的問(wèn)題。
Zend 還提供了一個(gè) PHP 擴(kuò)展,用戶(hù)可以將其安裝到 Web 服務(wù)器上以調(diào)試 PHP 腳本。使用 Zend 進(jìn)行調(diào)試非常容易,你只需要打開(kāi)源碼、在項(xiàng)目中設(shè)置斷點(diǎn)并運(yùn)行調(diào)試會(huì)話即可。
Zend 上的遠(yuǎn)程調(diào)試可以通過(guò)三種方式實(shí)現(xiàn)。第一個(gè)方案是使用 Zend Studio 上的 Debug URL 功能。
其次,你可以使用 Zend Studio 中的 Debug as Web Page 功能。最后,還可以使用 Firefox 或 Chrome 上的 Zend 瀏覽器工具欄。
WinPdb 是一個(gè)非常棒的 Python 調(diào)試器,能夠很好地在 Windows、Mac OS 和 Linux 系統(tǒng)上運(yùn)行。它同時(shí)兼容 Python 2.x 和 Python 3.x。
這個(gè)調(diào)試工具支持智能斷點(diǎn)、命名空間修改、多線程、嵌入式調(diào)試以及加密通信。對(duì)于遠(yuǎn)程調(diào)試功能來(lái)講,我們需要將 rpdb2.py(Winpdb 的命令行調(diào)試器)復(fù)制到遠(yuǎn)程機(jī)器上。
完成之后,使用調(diào)試器在遠(yuǎn)程機(jī)器啟動(dòng) Python 腳本。在本地機(jī)器上,啟動(dòng) GUI 并關(guān)聯(lián)要調(diào)試的腳本。此時(shí),我們可以使用遠(yuǎn)程設(shè)備腳本的基礎(chǔ)名稱(chēng)或完整路徑。關(guān)于使用 WinPDB 調(diào)試 Python 腳本的更多知識(shí),可以參考該教程。