$30 off During Our Annual Pro Sale. View Details »

May the PHP dev be with xdebug

May the PHP dev be with xdebug

- 【非公式】PHPカンファレンス福岡全然野菜
- 2023/06/22
- uzulla

uzulla

June 22, 2023
Tweet

More Decks by uzulla

Other Decks in Programming

Transcript

  1. May the PHP dev be with xdebug
    — ʲඇެࣜʳPHPΧϯϑΝϨϯε෱Ԭશવ໺ࡊ
    — 2023/06/22
    — uzulla

    View Slide

  2. View Slide

  3. View Slide

  4. View Slide

  5. ࣗݾ঺հ
    — uzulla
    — ྲྀ͠ͷPHPer
    — ࠓ೔MBPͷέʔϒϧ͕ম͚·͕ͨ͠ަ׵Ͱ͖·ͨ͠

    View Slide

  6. xdebug͔ͭͬͯ·͔͢ʁ
    — ʮ͔ͭͬͯΔΑɺεςοϓ࣮ߦͱ͔Break pointͰ͠ΐʁʯ
    — ʮͳΜ͔var_dump͕೿खʹͳΔΑͶʯ
    — ʮઃఆ໘౗͔ͩΒPrint debugͯ͠·͢ʯ

    View Slide

  7. ࠷ॳʹɺࡢࠓ(ver 3)ΠνΦγͷػೳ
    — ʮxdebugͷϩάʯʮ͑ͬʯ
    — ͪΐͬͱલ·Ͱɺxdebug͕ʮͳΜͰ͏͔͝ͳ͍ͷ͔ʯௐ΂Δͷେมͩͬͨ
    — xdebugͷϓϩ(ʁ)͕Τεύʔ͢Δ͜ͱ͕ଟ͔ͬͨ
    — ࠓ͸ৄࡉͳϩά͕ग़ͤΔͷͰࣗݾղָܾ͕ʑʂʂʂ
    # in php.ini (PHP_INI_SYSTEM)
    xdebug.log_level = 10
    xdebug.log = /tmp/xdebug.log
    # ࠓճͷαϯϓϧɺҎԼʹ͋Γ·͢
    # https://github.com/uzulla/phpconfuk2023-zenzenyasai-demo-code

    View Slide

  8. ྫɺConfig͕ݹ͍ͱ͔
    [20] [Config] CRIT:The setting 'xdebug.remote_host' has been renamed,
    see the upgrading guide at https://xdebug.org/docs/
    upgrade_guide#changed-xdebug.remote_host

    View Slide

  9. ྫɺ઀ଓͰ͖ͳ͍ͱ͔
    [16] [Step Debug] INFO: Connecting to configured address/port:
    localhost:9003.
    [16] [Step Debug] WARN: Creating socket for 'localhost:9003', poll
    success, but error: Operation now in progress (29).
    [16] [Step Debug] WARN: Creating socket for 'localhost:9003',
    connect: Cannot assign requested address.
    [16] [Step Debug] ERR: Could not connect to debugging client. Tried:
    localhost:9003 (through xdebug.client_host/xdebug.client_port).

    View Slide

  10. ϩά͸Ғେ
    — ͳΜ͔ಈ͔ͳ͍࣌͸͜ΕΛΈΖɺશ෦͜͜ʹ͋Δ
    — σόοΨ͕PhpStormͱ͔ʹͭͳ͕Βͳ͍ͷ͕Ұ൪೉͍ͬͯ͠ΈΜͳݴͬͯΔ͠…
    — ͦͷଞɺ௨৴಺༰ΛΈΔͱඇৗʹଟ͘ͷ৘ใ͕ಘΒΕ·͢ʂ
    ...
    [18] [Step Debug] <- step_into -i 10
    [18] [Step Debug] -> xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into"
    transaction_id="10" status="break" reason="ok">filename="file:///var/www/html/index.php" lineno="18">

    ...
    [18] [Step Debug] <- breakpoint_set -i 16 -t line -f file:///var/www/html/index.php -n 25

    View Slide

  11. xdebug_info()
    — Τεύʔճආʹ༗༻
    — ʮͳʹ͕Enableͳͷ͔ʯ
    — ʮͲ͜ʹͭͳ͗ʹ͍ͬͯΔͷ͔ʯ
    — ʮͲ͏͍͏Ϟʔυͳͷ͔ʯ
    — ౳Λ͠Β΂Δͷ͕͛͢ʔָʹ…
    — Doc΁ͷϦϯΫ΋͋Δ

    View Slide

  12. ͯ͞ɺࠓճ঺հ͢Δ໘നػೳ eval
    — ਖ਼໊ࣜশ͸͠Βͳ͍
    — evalͰ͖Δ
    — ʮͲ͜ͰͰ΋ʯ

    View Slide

  13. DEMO
    — PhpStorm+xdebug
    — σόοΨͰܭࢉػΛ͓ͯ͠৭ʑͰ͖Δ

    View Slide

  14. ͳΜͰ΋Ͱ͖Δ
    — ม਺ͷ্ॻ͖ͱ͔͕Ͱ͖Δ
    — Ϋϥεͱ͔ͷϩʔυ΋Ͱ͖Δ
    — PDOͷ৐ͬऔΓͱ͔΋Ͱ͖Δ
    — ϑΝΠϧͷಡΈॻ͖΋Ͱ͖Δ
    — ϦΫΤετσʔλͷμϯϓɺϩʔυͱ͔
    — ೔෇ͳͲͷվม
    — ͳΜͳΒɺ͜͜Ͱrequire_once͔Β શ෦ͷίʔυ Λॻ͍ͯΈΔ͜ͱ΋Ͱ͖Δ
    — (ͨͩɺGOTO͸͔ͭ͑ͳ͍ΜͩΑͶɺ࣍ͷߦΛʮεΩοϓʯͱ͔Ͱ͖ΔͱָͳΜ͚ͩ
    Ͳɻ·͋ifจͰ͘͘Ε͹Ͱ͖ͳ͍͜ͱ͸ͳ͍)

    View Slide

  15. Ͳ͏ͯ͠΋ϩάΛݟͨ͘ͳ͍ਓ΋͜͜ͰΈΕͯศརͰ͢Ͷʂʂʂ

    View Slide

  16. ͋ʔɺಥવ෸͘NoticeͰBreak͍ͨ͠ΑͶɺͲ͏͠Α͏…
    ͋ͱ͸Fatalͱ͔Ͱ΋औΓ͍ͨΑͶ…

    View Slide

  17. ͬͯ࣌ʹɺϓϩͷPHPer(ʁ)ͳΒϋϯυϥΛ͍ΕΔΑͶʂ

    View Slide

  18. (ͪΐͬͱͨܽ͠఺ɺ͜͜ͷը໘Ͱ͸ิ׬͸͖͚͘Ͳɺίʔυδϟϯϓ͸Ͱ͖ͳ͍)

    View Slide

  19. ʮධՁ෇͖Break point͏͔͝ͳ͍ͳ…ʯ͔Βͷʮ୅ೖͯ͠Δ΍Μ͚ʂʂʯ(͋Δ͋Δ)

    View Slide

  20. tips(?): ެࣜͷDocΛΈΖ
    — ౰ͨΓલ͗͢Δ͕ɺ͋ΒΏΔ৘ใ͸ެ͕ࣜਖ਼͍͠
    — ͱ͍͏͔ɺάάΔͱग़ͯ͘Δ৘ใ͸xdebug2ͷ৘ใ͕ଟ͍
    — 2->3Ͱ͔ͳΓมΘͬͨˍΈΜͳखบͰ΍ͬͯΔˍൿ఻ͷλϨͰɺ݁ߏϋνϟϝνϟ
    — ΑΈͳ͸Ε
    — ެࣜͷYoutube΋ඞݟ
    — https://www.youtube.com/@DerickRethansXdebug/playlists

    View Slide

  21. ͦͷ΄͔
    — ϓϩϑΝΠϥ…͸ɺseike͞Μͱ͔͕ྑ͍هࣄΛ͔͍͍ͯΔͷͰ
    — https://tech.fusic.co.jp/posts/2020-12-14-php8-xdebug-webgrind/
    — coverageɺtrace΋ͨͷ͍͚͠Ͳɺࠓ೔͸লུ
    — DBGp Proxy Tool ΋ศར΍Ͱ
    — This tool allows you to proxy and route debugging request to IDEs depending
    on which IDE key is in use.
    — stgαʔόʔͱ͔ʮෳ਺ਓͰ৮ΔαʔόʔʯͰ΋xdebug࢖͏࣌ʹͲ͏ͧ
    — https://xdebug.org/docs/dbgpProxy

    View Slide

  22. ·ͱΊ
    — ॻ͖׵͑ͯϦϩʔυ஍ࠈͱ͔ෆศ͗͢Δ… xdebugͷEvalͰॎԣແਚ͠Α͏ͥʂ
    — ʮ͜ͷIFͷcondͲ͏͢Ε͹͍͍͔ͳʯͱ͔ͷࢼߦࡨޡ͕ແݶʹͰ͖Δ
    — PHP͸ಈతݴޠͳͷͰɺevalͰ͖ͯศརʂ
    — (PsySHͱ͔΋͋Δ͚ͲɺPhpStorm+xdebugͷ΄͏͕΍ͬͺΓศརɺิ׬͋Δ͠)
    — ެࣜαΠτ΋ͦ͏͕ͩɺ࡞ऀͷYoutube΋ඞݟ
    — (όʔδϣϯʹΑͬͯػೳ͕;͑ͨΓɺมΘͬͨΓ͢Δͷ͸஫ҙ)
    — PhpStormͩͱUI΋Α͘Ͱ͖ͯ·͢Ͷʂ…͑ͬVSCʁ͏Μ…͕Μ͹ͬͯ…
    — ΋ͬͱ׆༻ͯ͠ΨϯΨϯ΍͍ͬͯ͜͏ͳʂ
    — ࣭໰͋Γ·͔͢ʁ

    View Slide