<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 附錄:gdb工具的使用 [TOC] GDB是GNU開源組織發布的一個強大的UNIX下的程序調試工具,可以用來調試C/C++開發的程序,PHP和Swoole是使用C語言開發的,所以可以用GDB來調試PHP+Swoole的程序。 gdb調試是命令行交互式的,需要掌握常用的指令。 ## 使用方法 ~~~ gdb -p 進程ID gdb php gdb php core ~~~ gdb有3種使用方式: * 跟蹤正在運行的PHP程序,使用gdb -p 進程ID * 使用gdb運行并調試PHP程序,使用gdb php -> run server.php 進行調試 * PHP程序發生coredump后使用gdb加載core內存鏡像進行調試 gdb php core > 如果PATH環境變量中沒有php,gdb時需要指定絕對路徑,如gdb /usr/local/bin/php ## 常用指令 * `p`:print,打印C變量的值 * `c`:continue,繼續運行被中止的程序 * `b`:breakpoint,設置斷點,可以按照函數名設置,如`b zif_php_function`,也可以按照源代碼的行數指定斷點,如`b src/networker/Server.c:1000` * `t`:thread,切換線程,如果進程擁有多個線程,可以使用t指令,切換到不同的線程 * `ctrl + c`:中斷當前正在運行的程序,和c指令配合使用 * `n`:next,執行下一行,單步調試 * `info threads`:查看運行的所有線程 * `l`:list,查看源碼,可以使用`l 函數名`或者`l 行號` * `bt`:backtrace,查看運行時的函數調用棧 * `finish`:完成當前函數 * `f`:frame,與bt配合使用,可以切換到函數調用棧的某一層 * `r`:run,運行程序 ## zbacktrace zbacktrace是PHP源碼包提供的一個gdb自定義指令,功能與bt指令類似,與bt不同的是zbacktrace看到的調用棧是PHP函數調用棧,而不是C函數。 下載php-src,解壓后從根目錄中找到一個`.gdbinit`文件,在gdb shell中輸入 ~~~ source .gdbinit zbacktrace ~~~ .gdbinit還提供了其他更多指令,可以查看源碼了解詳細的信息。 ## 使用gdb+zbacktrace跟蹤死循環問題 ~~~ gdb -p 進程ID ~~~ * 使用`ps aux`工具找出發生死循環的Worker進程ID * `gdb -p`跟蹤指定的進程 * 反復調用`ctrl + c`、`zbacktrace`、`c`查看程序在哪段PHP代碼發生循環 * 找到對應的PHP代碼進行解決
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看