zoukankan      html  css  js  c++  java
  • 使用什么调试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] SwooleCoroutine->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] SwooleCoroutine->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​zhuanlan.zhihu.com

  • 相关阅读:
    AWVS——windows下扫描(上)
    中介者模式
    设计模式-类型2
    设计模式=类型
    C++ 1
    字符占字节
    编程规范
    位运算相关规律
    十进制转二进制
    递归理解
  • 原文地址:https://www.cnblogs.com/a609251438/p/12492901.html
Copyright © 2011-2022 走看看