Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Debugger Statementについて

Debugger Statementについて

Debugger Statementの紹介と使い方
proposal-debugger-operandsについて

More Decks by Taketoshi Aono(青野健利 a.k.a brn)

Other Decks in Programming

Transcript

  1. Debugger
    Statement

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  10. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide