国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Chrome 瀏覽器 Javascript 調(diào)試參考

joywek / 2953人閱讀

摘要:關(guān)閉開(kāi)啟所有斷點(diǎn)不會(huì)取消。進(jìn)入到一個(gè)與正在的問(wèn)題無(wú)關(guān)的函數(shù)后,可以點(diǎn)擊此圖標(biāo)解析函數(shù)剩下的代碼,跳出函數(shù)到下一行。例如現(xiàn)在在處暫停,之后,瀏覽器解析函數(shù)剩下的代碼,然后在處再次暫停。是全局的,在瀏覽器的所有標(biāo)簽頁(yè)都能找到和運(yùn)行。

此文章翻譯自 https://developers.google.com...,是對(duì) chrome 下調(diào)試 javascript 的工具和方法介紹。

調(diào)試 js 需要結(jié)合瀏覽器斷點(diǎn)操作,具體可見(jiàn)我的上一篇文章:https://segmentfault.com/a/11...。

1、調(diào)試圖標(biāo)概覽

打上斷點(diǎn)之后,需要操作對(duì)應(yīng)圖標(biāo)進(jìn)行調(diào)試,圖標(biāo)如下:

從左到右分別是:

Pause/Resume script execution:暫停/恢復(fù)腳本執(zhí)行(程序執(zhí)行到下一斷點(diǎn)停止)。

Step over next function call:執(zhí)行到下一步的函數(shù)調(diào)用(執(zhí)行當(dāng)前斷點(diǎn)所在行,跳到下一行且暫停)。

Step into next function call:進(jìn)入當(dāng)前函數(shù),在第一行暫停。

Step out of current function:跳出當(dāng)前執(zhí)行函數(shù)。

Deactive/Active all breakpoints:關(guān)閉/開(kāi)啟所有斷點(diǎn)(不會(huì)取消)。

Pause on exceptions:異常情況自動(dòng)斷點(diǎn)設(shè)置。

Pause/Resume script execution( F8)

在斷點(diǎn)暫停后,點(diǎn)擊恢復(fù)腳本執(zhí)行,直到下一個(gè)斷點(diǎn)為止。

長(zhǎng)按圖標(biāo),會(huì)出現(xiàn)灰色的播放按鈕,鼠標(biāo)移上去再松開(kāi)左鍵,會(huì)忽略所有的斷點(diǎn),強(qiáng)制渲染完整的頁(yè)面。

Step over next function call (F10)

當(dāng)在一行代碼中暫停,代碼里包含一個(gè)與正在調(diào)試的問(wèn)題無(wú)關(guān)的函數(shù)時(shí),可以點(diǎn)擊此圖標(biāo)直接解析該函數(shù),而不是進(jìn)入函數(shù)內(nèi)部逐行執(zhí)行debug操作。

例如,當(dāng)你在 debug 以下代碼:

function updateHeader() {

    var day = new Date().getDay();

    var name = getName(); // A

    updateName(name); // D

};

function getName() {

    var name = app.first + " " + app.last; // B

    return name; // C

}

假設(shè)現(xiàn)在是在 A 處暫停。點(diǎn)擊 "跳過(guò)下個(gè)函數(shù)調(diào)用" 圖標(biāo),瀏覽器會(huì)解析被跳過(guò)的函數(shù)里的所有代碼(這里是 B 和 C),然后在 D 處再次暫停。

Step into next function call ( F11)

當(dāng)斷點(diǎn)找到了要 debug 的確切函數(shù),點(diǎn)擊圖標(biāo)進(jìn)入此函數(shù)內(nèi)部,逐行查看分析里面的變量值和方法。

例如:

function updateHeader() {

    var day = new Date().getDay();

    var name = getName(); // A

    updateName(name); // D

};

function getName() {

    var name = app.first + " " + app.last; // B

    return name; // C

}

此時(shí)在 A 處打點(diǎn)暫停了,而 A 處就是與問(wèn)題相關(guān)的函數(shù),點(diǎn)擊進(jìn)入函數(shù)里,會(huì)在 B 處暫停,再次點(diǎn)擊會(huì)在 C 處暫停,同時(shí) B 處會(huì)顯示 "name" 變量的值。

Step out of current function (Shift + F8)

進(jìn)入到一個(gè)與正在 debug 的問(wèn)題無(wú)關(guān)的函數(shù)后,可以點(diǎn)擊此圖標(biāo)解析函數(shù)剩下的代碼,跳出函數(shù)到下一行。

例如:

function updateHeader() {

var day = new Date().getDay();

    var name = getName(); // A

    updateName(name); // D

};

function getName() {

    var name = app.first + " " + app.last; // B

    return name; // C

}

現(xiàn)在在 B 處暫停,step out 之后,瀏覽器解析 getName() 函數(shù)剩下的代碼(C),然后在 D 處再次暫停。

2、調(diào)試區(qū)域其他功能概覽 Run all code up to a certain line

如果你在 debug 一個(gè)很長(zhǎng)的函數(shù),里面包含了很多與問(wèn)題無(wú)關(guān)的代碼,需要區(qū)分出來(lái)。

首先在函數(shù)里設(shè)置第一個(gè)斷點(diǎn),執(zhí)行至?xí)和#缓螅腥N方法 debug :

1、使用 step into function 逐行解析查看結(jié)果,會(huì)浪費(fèi)不少時(shí)間;

2、根據(jù)結(jié)果判斷哪些是無(wú)用的代碼,越過(guò)它們?cè)僭O(shè)置下一個(gè)斷點(diǎn),使用 resume script 執(zhí)行到下一個(gè)斷點(diǎn);

3、根據(jù)結(jié)果判斷哪些是無(wú)用的代碼,在下一個(gè)需要暫停的地方,右鍵行數(shù),選擇 “continue to here”,瀏覽器會(huì)直接解析到那一行并暫停,推薦的方法。

View the current call stack

在一行代碼里暫停時(shí),可以在 Call Stack 面板查看是哪些棧將你帶到了當(dāng)前斷點(diǎn)(到達(dá)當(dāng)前函數(shù)調(diào)用了哪些函數(shù))。如果不是在一行代碼里暫停, Call Stack 面板是沒(méi)有內(nèi)容的。

如果要查看異步函數(shù),可以勾選 Async 。(在 windows 版本中沒(méi)有此選項(xiàng),默認(rèn)顯示異步函數(shù))。

點(diǎn)擊函數(shù)會(huì)跳到此函數(shù)調(diào)用的地方。藍(lán)色箭頭是當(dāng)前查看的函數(shù)。

Copy stack trace

在 Call Stack 面板里右鍵,選擇 Copy stack trace 可以將面板里的 stack 信息復(fù)制到 clipboard。

復(fù)制的信息格式如下(函數(shù)名稱、在代碼里的行數(shù)):

getNumber1(get-started.js:35)

inputsAreEmpty(get-started.js:22)

onClick(get-started.js:15)
Restart the top function of the call stack

在調(diào)試函數(shù)的過(guò)程中,想回到函數(shù)的開(kāi)頭重新 debug 的時(shí)候,可以在 Call Stack 面板中對(duì)應(yīng)的函數(shù)上右鍵,選擇 Restart Frame 而無(wú)需在開(kāi)頭打斷點(diǎn)。Call Stack 面板里是斷點(diǎn)函數(shù)以及所涉及到的其他函數(shù),最頂端的函數(shù)是當(dāng)前的斷點(diǎn)函數(shù)。

例如:

function factorial(n) {

    var product = 0; // B

    for (var i = 1; i <= n; i++) {

    product += i;

};

return product; // A

}

現(xiàn)在在 A 處暫停,點(diǎn)擊 Restart Frame 之后,會(huì)在 B 處暫停。

Ignore a script or pattern of scripts

在 debug 過(guò)程中,可以選擇忽略部分腳本,不在 Call Stack 中顯示,在 step into function 的時(shí)候也不會(huì)進(jìn)入被忽略的腳本。

例如:

function animate() {

    prepare();

    lib.doFancyStuff(); // A

    render();

}

A是你確認(rèn)與當(dāng)前問(wèn)題無(wú)關(guān)的第三方庫(kù),那就可以將它關(guān)入黑盒子里忽略掉。

在編輯區(qū)操作: 在 Source Tab 中雙擊打開(kāi)文件 -> 在文件編輯區(qū)右鍵,選擇 Blackbox script 。

在Call Stack 面板操作: 在 Call Stack 面板中找到對(duì)應(yīng)的腳本 -> 右鍵選擇 Blackbox script 。

在控制臺(tái)設(shè)置黑盒: 控制臺(tái)右上角找到 "Customize and control DevTools" 圖標(biāo)(或按F1) -> 選擇 Blackboxing tab -> 點(diǎn)擊 Add pattern -> 在對(duì)話框中輸入腳本名字或腳本名字的正則表達(dá)式 -> 點(diǎn)擊 Add。

Change thread context

在網(wǎng)站有 web workers 或者 service workers 線程的時(shí)候,需要分別查看主線程和這兩個(gè)線程的 context ,可以在 Threads 面板切換。

上圖藍(lán)色箭頭處是當(dāng)前線程的 context , 可以點(diǎn)擊切換其他線程。

View and edit local, closure, and global properties

在斷點(diǎn)暫停時(shí),可以在 Scope 面板里查看和編輯局部、閉包和全局范圍內(nèi)的屬性和變量的值。不會(huì)顯示不可枚舉的屬性。

雙擊一個(gè)屬性值可以輸入新的值。

Run snippets of debug code from any page

如果在調(diào)試中,需要一次次在控制臺(tái)輸入相同的內(nèi)容的話,可以使用 Snippets(代碼片段) 功能減少重復(fù)勞動(dòng)。代碼片段是您在DevTools中編寫、存儲(chǔ)和運(yùn)行的可執(zhí)行腳本。

Snippets 是全局的,在瀏覽器的所有標(biāo)簽頁(yè)都能找到和運(yùn)行。

具體可查看 https://developers.google.com...。

Watch the values of custom JavaScript expressions

在 debug 過(guò)程中,如果希望重點(diǎn)觀察某些變量的值(而不是在 Scope 面板里層層點(diǎn)開(kāi)),可以加入 Watch 面板。Watch 面板里的值會(huì)在執(zhí)行代碼時(shí)自動(dòng)刷新。

"+" 圖標(biāo)創(chuàng)建新的 expression;右邊是刷新圖標(biāo),手動(dòng)刷新變量的值;鼠標(biāo)移動(dòng)到變量上,在右側(cè)會(huì)出現(xiàn)刪除圖標(biāo)。

Make a minified file readable

可以將最小化了的代碼還原成對(duì)人友好的形式。

點(diǎn)擊代碼編輯區(qū)域左下角的 "{}" 圖標(biāo)。

Edit a script

如果要嘗試修復(fù) bug , 不需要切換到編輯器修改,再刷新當(dāng)前頁(yè)面。你可以直接在代碼編輯區(qū)域修改代碼然后保存看看修改后的效果。如果是最小化了的代碼,可以先還原成對(duì)人友好的格式。

tips:確定修改方向之后,記得在編輯器代碼里修改保存。

操作: 修改代碼 -> 按 Command + S (mac)或 Ctrl + S (windows, Linux)保存修改 -> 查看效果。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/92036.html

相關(guān)文章

  • Chrome 覽器 Javascript 調(diào)試參考

    摘要:關(guān)閉開(kāi)啟所有斷點(diǎn)不會(huì)取消。進(jìn)入到一個(gè)與正在的問(wèn)題無(wú)關(guān)的函數(shù)后,可以點(diǎn)擊此圖標(biāo)解析函數(shù)剩下的代碼,跳出函數(shù)到下一行。例如現(xiàn)在在處暫停,之后,瀏覽器解析函數(shù)剩下的代碼,然后在處再次暫停。是全局的,在瀏覽器的所有標(biāo)簽頁(yè)都能找到和運(yùn)行。 此文章翻譯自 https://developers.google.com...,是對(duì) chrome 下調(diào)試 javascript 的工具和方法介紹。 調(diào)試 j...

    pepperwang 評(píng)論0 收藏0
  • JavaScript編程簡(jiǎn)介:DOM、AJAX與Chrome調(diào)試器-天碼營(yíng)

    摘要:所有全局對(duì)象函數(shù)以及變量均自動(dòng)成為對(duì)象的成員。消息彈出窗口對(duì)象使用簡(jiǎn)單方便,但因其交互方式生硬,通常只用于調(diào)試。可以在中創(chuàng)建三種消息框警告框確認(rèn)框提示框。習(xí)慣上,通過(guò)選擇符得到的集合一般命名為以起始的字符串,例如。 avascript 等于 ECMAScript + 宿主環(huán)境。宿主環(huán)境提供了一系列的全局對(duì)象,例如Node.js提供的require, console等;瀏覽器提供的DOM...

    KoreyLee 評(píng)論0 收藏0
  • Jerry和您聊聊Chrome開(kāi)發(fā)者工具

    摘要:開(kāi)發(fā)者工具是日常工作使用的三大調(diào)試器之一。當(dāng)然我可以在開(kāi)發(fā)者工具的標(biāo)簽頁(yè)手動(dòng)選中響應(yīng)內(nèi)容,然后,再到本地新建一個(gè)文件,。注開(kāi)發(fā)者工具顏色的修改希望這篇文章能讓您對(duì)開(kāi)發(fā)者工具有一些更深入的了解,感謝閱讀。 Chrome開(kāi)發(fā)者工具是Jerry日常工作使用的三大調(diào)試器之一。雖然工具名稱前面帶了個(gè)開(kāi)發(fā)者, 但是它對(duì)非開(kāi)發(fā)人員仍然有用。不信? 用Chrome打開(kāi)我們常用的網(wǎng)站,按F12,在Con...

    binta 評(píng)論0 收藏0
  • Jerry和您聊聊Chrome開(kāi)發(fā)者工具

    摘要:開(kāi)發(fā)者工具是日常工作使用的三大調(diào)試器之一。當(dāng)然我可以在開(kāi)發(fā)者工具的標(biāo)簽頁(yè)手動(dòng)選中響應(yīng)內(nèi)容,然后,再到本地新建一個(gè)文件,。注開(kāi)發(fā)者工具顏色的修改希望這篇文章能讓您對(duì)開(kāi)發(fā)者工具有一些更深入的了解,感謝閱讀。 Chrome開(kāi)發(fā)者工具是Jerry日常工作使用的三大調(diào)試器之一。雖然工具名稱前面帶了個(gè)開(kāi)發(fā)者, 但是它對(duì)非開(kāi)發(fā)人員仍然有用。不信? 用Chrome打開(kāi)我們常用的網(wǎng)站,按F12,在Con...

    Donald 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<