Slide 1

Slide 1 text

Debugger Statement

Slide 2

Slide 2 text

Name @brn (ꫬꅿ⨳ⵃ) Occupation ؿٗٝزؒٝسؒٝآص،٥ط؎ذ؍ـؒٝآص، Company Cyberagent ،سذؙأةآؔ AI Messenger OSS Contributor of V8 About http://info.b6n.ch

Slide 3

Slide 3 text

What is debugger? debugger statementהכ؝٦س⚥ח剅ֻֿהדرغحؖ׾饯⹛׃ـ ٖ؎ؙ׃גֻ׸׷堣腉

Slide 4

Slide 4 text

const ret = foo()! if (ret) {! debugger;! }!

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

In V8 BytecodeהJIT؝٦سדⰟ鸐ךⳢ椚׾遤ֲ

Slide 7

Slide 7 text

Bytecode DebuggerعٝسָٓDebuggerغ؎ز؝٦س׾鋅אֽ׷ה Runtime_HandleDebuggerStatement׾ㄎן⳿׃גծ✲⵸ח涫 ꐮׁ׸גְ׷؝٦ٕغحؙ׾ㄎן⳿ׅ In V8

Slide 8

Slide 8 text

JIT Code JIT⻉ך麓玎דㄏ⟀ך⽃秪⻉הְֲ剑黝⻉ָ遤׻׸׷ָծ׉ך麓 玎דDebugger Statementכ⯓玎ך Runtime_HandleDebuggerStatementㄎן⳿׃ך؝٦سפה湫 䱸㢌䳔ׁ׸׷ In V8

Slide 9

Slide 9 text

Break Point אְדזךדBreakpointחאְג ـٓؐؠך؎ٝألؙةַ׵䭷㹀ׅ׷ֿהָדֹ׷ •  In V8

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

In V8 DebugBreakכDebugger Statementה麩׏גוֿח䯏Ⰵׁ׸׷ַ ׻ַ׵זְךד✲⵸חRuntime_HandleDebuggerStatementהַח כ㢌䳔דֹזְ

Slide 12

Slide 12 text

Bytecode DebugBreakعٝسָٓDebug::HandleDebugBreak׾ㄎן⳿׃ גծ穠卓Debugger StatementהずׄⳢ椚׾遤ֲ In V8

Slide 13

Slide 13 text

JIT Code(X64) ـٖ؎ؙه؎ٝزכׅץגInt3ㄏ⟀ָ涪遤ׁ׸גSIGTRAP׾䒷ֹ 饯ֿׅ interruptָ饯ֿ׷הStackGuard::HandleInterruptsָㄎן⳿ׁ׸ גծ׉ַֿ׵Debug::HandleDebugBreakפ In V8

Slide 14

Slide 14 text

Future ⯓傈ךTC39 Meetingדproposal-debugger-operandָStage1ח ז׏׋

Slide 15

Slide 15 text

proposal-debugger-operand ـٖ؎ؙه؎ٝزךؚٕ٦ف⻉ח״׷♧俕ON/OFFծ勴⟝➰ֹـ ٖ؎ؙך鏣㹀瘝ָ遤ִ׷ Future

Slide 16

Slide 16 text

const log = (v) => {! debugger { group: 'logging' };! console.log(v);! };!

Slide 17

Slide 17 text

const route = (httpRequest) => {! debugger {! test: () => httpRequest.tracing || !isProduction! };! console.log(v);! };!

Slide 18

Slide 18 text

㹋騧 Ꟛ涪儗חכDebugger׾㙵׭鴥׿דծٔٔ٦أ儗ח嶊ׅ Webpack׾⢪׏ג׷ז׵Uglifyָ嶊׃גֻ׸׷ v4ך㜥さכmode productionד⹧䩛ח嶊ִ׷

Slide 19

Slide 19 text

class Logger {! fatal() {! console.error("Error");! debugger;! }! }!

Slide 20

Slide 20 text

תה׭ ⢪׏ג׷➂㼰זְ⽩韋דָׅꟚ涪儗ח⢪ֲה穠圓嚂דׅ