瀏覽器開發(fā)工具的使用——Sources面板
當前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
?? 面板介紹Sources面板界面通常包含左、中、右三個區(qū)塊,下面將分別介紹各個區(qū)塊的功能。 網(wǎng)頁(Page)顯示當前頁面已經(jīng)加載的靜態(tài)資源,包含html、JS、CSS、圖片、字體等,按照域名和路徑聚合成一個樹形結(jié)構(gòu)展示。 點擊文件名可以在中間區(qū)塊查看文件內(nèi)容以及文件信息等。對于html/css/js文件,會自動格式化方便查看;圖片文件會顯示圖片尺寸和大小等。 除此之外,還會展示已加載的瀏覽器擴展資源(如上圖中的CodeArts API);如果頁面有Web Worker運行,還會在與top同一層級顯示其他線程的JS代碼。 根據(jù)顯示的資源路徑,我們通常可以用來排查一些靜態(tài)資源404的問題。 工作區(qū)(Workspace)可添加本地工程源碼,與網(wǎng)頁上代碼進行關(guān)聯(lián),在調(diào)試頁面修改的內(nèi)容會自動同步到本地文件中。 點擊“添加文件夾”后,選擇本地工程源碼的根目錄,點擊“允許”DevTools獲取對該文件夾完整訪問權(quán)限,已成功建立關(guān)聯(lián)的文件圖標中會顯示一個綠色的標識。 建立關(guān)聯(lián)之后,可直接在調(diào)試頁面修改文件內(nèi)容,也可新增/刪除文件等,按Ctrl+S保存后,修改的內(nèi)容會同步寫入到本地文件中。 如果不想繼續(xù)使用該功能,在根目錄右鍵選擇“從工作區(qū)移除”即可。 替換(Overrides)可以用本地的內(nèi)容替換原本網(wǎng)絡(luò)請求(包括js、css、數(shù)據(jù)請求等)的內(nèi)容,實現(xiàn)不借助代理工具就可以完成簡單的mock調(diào)試等。可按照如下步驟操作:
不想繼續(xù)使用替換,可以去掉“啟動本地替換”的勾選,或者直接清除配置。 內(nèi)容腳本(Content scripts)瀏覽器擴展的js腳本,用來調(diào)試已安裝的瀏覽器擴展。 代碼片段(Snippets)可以將一些常用的可運行代碼片段持久化保存,方便下次快速運行。 點擊添加“新代碼段”,可以為這段代碼命名,編輯內(nèi)容后按Ctrl+S保存,在代碼片段名右擊選擇“運行”。 ?? 斷點調(diào)試調(diào)試首先需要設(shè)置斷點,讓程序運行到指定的地方暫停,分析此時的數(shù)據(jù)是否符合預(yù)期,從而排查問題。 代碼行斷點
可以通過代碼添加debugger語句(調(diào)試完還要手動移除,不推薦);或者在文件內(nèi)容行號點擊鼠標左鍵添加藍色的斷點標記,再次點擊可取消。
行號右擊選擇“添加條件斷點”,輸入進入斷點的條件,然后按回車生效,會生成一個橙色的斷點標記。
行號右擊選擇“添加日志點”,按照console.log格式輸入打印語句,然后按回車生效,會生成一個紫紅色的斷點標記。 異常斷點設(shè)置異常斷點可以快速定位到產(chǎn)生異常的位置。
對于如Angular框架有全局異常捕獲無法進入斷點。
XHR/提取斷點網(wǎng)址中包含設(shè)定的內(nèi)容時中斷,當指定的網(wǎng)絡(luò)請求發(fā)送前,會進入中斷狀態(tài)。 事件監(jiān)聽器斷點觸發(fā)對應(yīng)事件后會進入暫停狀態(tài),比如鼠標的click事件,定時器,剪貼板等。只有注冊了對應(yīng)事件的監(jiān)聽才會生效。 以定時器為例,可以快速定位到定時器觸發(fā)執(zhí)行的位置。 DOM斷點可以在指定dom元素發(fā)生修改后進入中斷。 此斷點需要在元素(Element)面板中添加。找到指定元素,鼠標右鍵后選擇“發(fā)生中斷的條件”,可以勾選選擇“子樹修改”、“屬性修改”或“移除節(jié)點”,當勾選的條件滿足時就會進入中斷狀態(tài)。 CSP違規(guī)斷點當網(wǎng)頁嘗試加載或執(zhí)行違反CSP策略的內(nèi)容時,瀏覽器會自動暫停執(zhí)行并觸發(fā)一個斷點。 調(diào)試代碼運行至斷點處,進入中斷狀態(tài),此時前端頁面顯示“已在調(diào)試程序中暫停”,Sources面板中顯示“已在斷點暫?!?,并且調(diào)試頁面代碼跳轉(zhuǎn)至暫停的代碼行,并且此行黃色顯示。
同時在右側(cè)區(qū)塊,作用域和調(diào)用堆棧都顯示出了內(nèi)容。 作用域:可以看到暫停時當前位置可以訪問變量的值,包含當前代碼塊、本地、閉包、腳本等。 通過查看各種變量的值判斷代碼執(zhí)行的結(jié)果是否符合預(yù)期。 調(diào)用堆棧:可以查看函數(shù)的調(diào)用鏈,用來查看當前的調(diào)用關(guān)系。 選中某個函數(shù)右鍵選擇“重啟幀”可以回到開始調(diào)用該函數(shù)的狀態(tài)(列如異步場景等無法重啟)。 如果不關(guān)注第三方庫函數(shù)的調(diào)用,可以右鍵忽略指定的js腳本或者忽略全部第三方腳本,忽略后默認不會顯示在調(diào)用堆棧中,顯示更簡潔方便快速排查業(yè)務(wù)代碼問題。
當暫停后查看數(shù)據(jù)沒有問題,需要繼續(xù)排查,開發(fā)工具在右側(cè)區(qū)塊頂部提供了一些操作按鈕,分別是:
監(jiān)視器:在每次暫停時,會獲取監(jiān)視變量當前狀態(tài)下最新的值,便于快速發(fā)現(xiàn)非預(yù)期的變化。 點擊監(jiān)視器右側(cè)的“添加”按鈕,輸入變量名或者JS表達式,按下回車生效。已經(jīng)存在的監(jiān)視器可以點擊“刪除”按鈕刪除掉。 ?? 線上調(diào)試線上部署的代碼經(jīng)過構(gòu)建之后被混淆和壓縮,同時為了安全不會將sourcemap文件發(fā)布至線上環(huán)境,因此線上環(huán)境的代碼即使經(jīng)過格式化后也很難閱讀,難以直接調(diào)試。 可以按照如下步驟加載本地的sourcemap文件進行調(diào)試:
如果沒有此選項,需在設(shè)置中開啟JavaScript源代碼映射。
注意:即使是同一份代碼,可能會因為依賴版本不一致導致線上和本地構(gòu)建出的文件hash不相同,即使可以成功加載sourcemap文件也會因為映射具有差異而失效。 ?轉(zhuǎn)自https://juejin.cn/post/7502047502342996008 該文章在 2025/5/14 11:40:26 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |