使用什麼除錯swoole程式

2021-10-03 21:21:05 字數 1761 閱讀 4437

可以使用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] () /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] () /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

為什麼要用swoole

為什麼要用swoole?因為swoole開源專案就是為了彌補php在這些方面的缺陷誕生的。與wordpress這些產品不同,swoole實際上是乙個網路通訊和非同步io的引擎,乙個基礎庫。swoole框架相比apache fpm,主要節省php框架和全域性物件每次請求建立銷毀帶來的效能損耗。swoo...

使用pdb除錯Python程式

本文討論在沒有方便的ide工具可用的情況下,使用pdb除錯python程式 原始碼例子 例如,有模擬稅收計算的程式 usr bin python def debug demo val if val 1600 print level 1 print 0 elif val 3500 print leve...

使用GDB除錯程式

gdb是gnu發布的一款功能強大的程式除錯工具。gdb主要完成下面三個方面的功能 1.啟動被除錯程式 2.讓被除錯的程式在指定的位置停住 3.當程式被停住時,可以檢查程式狀態 如變數值 假如要對程式test.c進行除錯,除錯流程為 1.編譯生成可執行檔案 gcc g test.c o test 2....