• 技术文章 >php框架 >Swoole

    使用什么调试swoole程序

    angryTomangryTom2020-02-12 14:01:08原创996

    使用什么调试swoole程序

    可以使用GDB调试swoole程序。gdb是GNU debugger的缩写,是编程调试工具。

    gdb的功能:

    1. 启动程序,可以按照用户自定义的要求随心所欲的运行程序。

    2. 可让被调试的程序在用户所指定的调试断点处停住(断点可以是条件表达式)。

    3. 当程序停住时,可以检查此时程序中所发生的事。比如,可以打印变量的值。

    4. 动态改变变量程序的执行环境。

    推荐学习: swoole教程

    使用gdb调试swoole的方法:

    进入gdb

    gdb php test.php

    gdbinit

    (gdb) source /path/to/swoole-src/gdbinit

    设置断点

    例如co::sleep函数

    (gdb) b zim_swoole_coroutine_util_sleep

    打印当前进展的所有协程和状态

    (gdb) co_list 
    coroutine 1 SW_CORO_YIELD
    coroutine 2 SW_CORO_RUNNING

    打印当前运行时协程的调用栈

    (gdb) co_bt 
    coroutine cid:[2]
    [0x7ffff148a100] Swoole\Coroutine->sleep(0.500000) [internal function]
    [0x7ffff148a0a0] {closure}() /home/shiguangqi/php/swoole-src/examples/coroutine/exception/test.php:7 
    [0x7ffff141e0c0] go(object[0x7ffff141e110]) [internal function]
    [0x7ffff141e030] (main) /home/shiguangqi/php/swoole-src/examples/coroutine/exception/test.php:10

    打印指定协程id的调用栈

    (gdb) co_bt 1
    [0x7ffff1487100] Swoole\Coroutine->sleep(0.500000) [internal function]
    [0x7ffff14870a0] {closure}() /home/shiguangqi/php/swoole-src/examples/coroutine/exception/test.php:3 
    [0x7ffff141e0c0] go(object[0x7ffff141e110]) [internal function]
    [0x7ffff141e030] (main) /home/shiguangqi/php/swoole-src/examples/coroutine/exception/test.php:10

    打印串联协程的状态

    (gdb) co_status 
         stack_size: 2097152
         call_stack_size: 1
         active: 1
         coro_num: 2
         max_coro_num: 3000
         peak_coro_num: 2

    以上就是使用什么调试swoole程序的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:调试 swoole 工具
    上一篇:怎么杀掉swoole进程 下一篇:swoole与mysql怎么用才好
    大前端线上培训班

    相关文章推荐

    • Linux调试工具GDB使用教程• 如何在运维的过程中使用gdb查看挂掉程序堆栈信息• gdb调试php轻松找到当前执行的代码• 【docker+gdb】调试 PHP 源码,看 strval 函数 C 实现

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网