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

Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How...

Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE

2026-03-21 PHPerKaigi 2026

Avatar for shin1x1

shin1x1

March 28, 2026
Tweet

More Decks by shin1x1

Other Decks in Programming

Transcript

  1. D .BTBTIJ4IJOCBSB!TIJOY 9EFCVHઃఆ઀ଓઌઃఆ w σόοάηογϣϯ͸9EFCVH͔Β*%&ʹ઀ଓʢେࣄʂʣ 5$1*1PS6/*9υϝΠϯιέοτͰ઀ଓ w YEFCVHDMJFOU@IPTU઀ଓઌ *%& ϗετ

    σϑΥϧτMPDBMIPTU %PDLFS؀ڥͰ͸IPTUEPDLFSJOUFSOBM͕ར༻͞ΕΔ͜ͱ͕ଟ͍ w YEFCVHDMJFOU@QPSU઀ଓઌ *%& ϙʔτ σϑΥϧτ
  2. D .BTBTIJ4IJOCBSB!TIJOY FYJOJUσόοάηογϣϯ։࢝ w 9EFCVHηογϣϯ։࢝࣌ʹ*%&΁ૹ৴ w ͜ΕҎ߱͸ɺ*%&͔ΒίϚϯυૹ৴ɺ9EFCVH͕ฦ৴ʹͳΔ <init appid="8" idekey="PHPSTORM"

    language="PHP" protocol_version="1.0" fi leuri=" fi le:///var/www/html/public/index.php"> <engine version="3.5.1"><![CDATA[Xdebug]]></engine> </init>
  3. D .BTBTIJ4IJOCBSB!TIJOY FYCSFBLQPJOU@TFUϒϨʔΫϙΠϯτઃఆ w *%&ϒϨʔΫϙΠϯτઃఆΛૹ৴ʢϒϨʔΫϙΠϯτ͝ͱʹૹ৴ʣ breakpoint_set -i 3 -t line

    -f fi le:///var/www/html/routes/web.php -n 13 w 9EFCVHϒϨʔΫϙΠϯτ৘ใΛอ࣋ <response xmlns="urn:debugger_protocol_v1"
 xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="3" id="80003" resolved="unresolved"> </response> ର৅ίϚϯυ ର৅τϥϯβΫγϣϯ*%
  4. D .BTBTIJ4IJOCBSB!TIJOY FYTUFQ@JOUPεςοϓΠϯ࣮ߦ w *%&1)1ίʔυͷεςοϓΠϯ࣮ߦΛૹ৴ w 9EFCVH1)1ίʔυ࣮ߦɻ࣍ͷߦͰ࣮ߦఀࢭͯ͠ɺϨεϙϯεΛฦ͢ɻ step_into -i 10

    <response xmlns="urn:debugger_protocol_v1"
 xmlns:xdebug="https://xdebug.org/dbgp/xdebug" command="step_into" transaction_id="10" status="break" reason="ok"> <xdebug:message fi lename=" fi le:///var/www/html/public/index.php" lineno="6">
 </xdebug:message> </response> ίʔυ్தͰఀࢭ ࣍ʹ࣮ߦ͢Δߦʢ*%&͸͜ͷߦͰఀࢭঢ়ଶʣ
  5. D .BTBTIJ4IJOCBSB!TIJOY ͦͷଞͷओͳίϚϯυ ίϚϯυ ಺༰ TUFQ@PWFS εςοϓΦʔόʔ TUFQ@PVU εςοϓΞ΢τ DPOUFYU@HFU

    ࢦఆͨ͠ίϯςΫετͷม਺Λऔಘ FWBM 1)1ίʔυΛૹ৴ͯ͠ɺධՁ݁ՌΛऔಘ GFBUVSF@TFU σόοάηογϣϯػೳΛઃఆ IUUQTYEFCVHPSHEPDTECHQ
  6. D .BTBTIJ4IJOCBSB!TIJOY ϩάͰ௨৴಺༰ΛݟΔ w YEFCVHMPHύεΛࢦఆ͢Δͱ௨৴಺༰ΛϑΝΠϧʹه࿥ YEFCVHMPHQBUIUPYEFCVHMPH w YEFCVHMPH@MFWFMϩάϨϕϧ *OGPSNBUJPOʢσϑΥϧτʣ %FCVHϒϨʔΫϙΠϯτͷϚονϯά΋ग़ྗʢ࠷΋ৄࡉʣ

    w MPH@MFWFMϩά͕๲େʹͳΔͷͰɺ௨ৗ͸ҎԼʹ͓ͯ͘͠ [7] [Step Debug] <- feature_set -i 1 -n show_hidden -v 1 [7] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https:// xdebug.org/dbgp/xdebug" command="feature_set" transaction_id="1" feature="show_hidden" success="1"></response>
  7. D .BTBTIJ4IJOCBSB!TIJOY ϩά಺༰αϯϓϧ [8] Log opened at 2026-03-21 01:47:40.687357 [8]

    [Config] INFO: No shared secret: Activating [8] [Step Debug] INFO: Connecting to configured address/port: host.docker.internal:9003. [8] [Step Debug] INFO: Connected to debugging client: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port). [8] [Step Debug] -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https://xdebug.org/ dbgp/xdebug" fileuri="file:///var/www/html/public/index.php" language="PHP" xdebug:language_version="8.5.4" protocol_version="1.0" appid="8" idekey="1"><engine version="3.5.0"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><! [CDATA[https://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2025 by Derick Rethans]]></copyright></init> (snip) [8] [Step Debug] <- run -i 18 [8] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https:// xdebug.org/dbgp/xdebug" command="run" transaction_id="18" status="break" reason="ok"><xdebug:message filename="file:///var/www/html/routes/web.php" lineno="11"></ xdebug:message></response>
  8. D .BTBTIJ4IJOCBSB!TIJOY ࠔͬͨΒ ERR: Could not connect to debugging client.

    Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port). w 9EFCVHɺ1IQ4UPSNυΩϡϝϯτΛݟΔ IUUQTXXXKFUCSBJOTDPNIFMQQIQTUPSNUSPVCMFTIPPUJOHQIQEFCVHHJOHIUNM IUUQTYEFCVHPSHEPDTTUFQ@EFCVH w ௨৴ϩάΛݟΔ
  9. D .BTBTIJ4IJOCBSB!TIJOY έʔε9EFCVH͕*%&ʹ઀ଓͰ͖ͳ͍ ERR: Could not connect to debugging client.

    Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port). w EFCVHHJOHDMJFOU *%& ʹ઀ଓͰ͖ͳ͍ w 9EFCVH઀ଓઌ͸ਖ਼͍͔͠ʁ w 1IQ4UPSNσόοάηογϣϯΛ଴ͪड͚͍ͯΔʁʢ஬ϚʔΫ༗ޮʁʣ w 1IQ4UPSN଴ͪड͚ϙʔτ͸ਖ਼͍͔͠ 
  10. D .BTBTIJ4IJOCBSB!TIJOY έʔεϒϨʔΫϙΠϯτͰࢭ·Βͳ͍ WARN: Debug client detached: Cannot bind file

    /var/www/html/public/index.php to the web server project. w 1IQ4UPSN1BUINBQQJOHTઃఆͷෆඋ w 1)14FSWFSTͰ1)1 9EFCVH αʔόઃఆΛߦ͏
  11. D .BTBTIJ4IJOCBSB!TIJOY έʔε*%&͕FWBM Ͱ஋Λऔಘ [8] [Step Debug] <- eval -i

    13 -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p [8] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https:// xdebug.org/dbgp/xdebug" command="eval" transaction_id="13"><property type="string" size="9" encoding="base64"><![CDATA[bG9jYWxob3N0]]></property></response> KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10p: (string)($_SERVER['SERVER_NAME'])
 bG9jYWxob3N0: localhost [8] [Step Debug] <- eval -i 14 -- KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10p [8] [Step Debug] -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="https:// xdebug.org/dbgp/xdebug" command="eval" transaction_id="14"><property type="string" size="4" encoding="base64"><![CDATA[ODA4MA==]]></property></response> KHN0cmluZykoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10p: (string)($_SERVER['SERVER_PORT']) ODA4MA==: 8080 w @4&37&3<4&37&3@/".&>ͷऔಘʢίʔυ΍஋͸CBTFͰΤϯίʔυʣ w @4&37&3<4&37&3@1035>ͷऔಘʢίʔυ΍஋͸CBTFͰΤϯίʔυʣ
  12. D .BTBTIJ4IJOCBSB!TIJOY 9EFCVH͕ίʔυ࣮ߦΛࢭΊΔ࢓૊Έ w 9EFCVH4UFQEFCVHHJOH༗ޮ࣌ɺ1)1ίϯύΠϥ͕จ୯ҐͰ ;&/%@&[email protected]Φϖίʔυࠩࠐ USBDF΍QSP fi MFͳͲ΋ಉ༷ w

    ΦϖίʔυϋϯυϥΛى఺ʹఀࢭ൑ఆΛ࣮ߦ ϒϨʔΫϙΠϯτɺεςοϓ ΠϯcΞ΢τcΦʔόʔ  w ఀࢭͨ͠ΒɺϨεϙϯεΛฦͯ͠ɺίϚϯυड৴଴ͪʹͳΔʢSFDW ʣ w SVO΍TUFQ@JOUPͳͲͷ࣮ߦίϚϯυ͕དྷͨΒ࠶։ &[email protected] "44*(/$7 J JOU   &[email protected] 5.6-$7 J JOU   "44*(/$7 K 5