可以使用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程式的詳細內容
phpzhuanlan.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....