PHP Conference Japan 2024

mysqli::debug

mysqli_debug

(PHP 5、PHP 7、PHP 8)

mysqli::debug -- mysqli_debug执行调试操作

描述

面向对象风格

public mysqli::debug(string $options): true

过程化风格

mysqli_debug(string $options): true

使用 Fred Fish 调试库执行调试操作。

参数

options

表示要执行的调试操作的字符串

调试控制字符串是一系列以冒号分隔的字段,如下所示:

<field_1>:<field_2>:<field_N>
每个字段包含一个必需的标志字符,后跟一个可选的,和逗号分隔的修饰符列表:flag[,modifier,modifier,...,modifier]

识别标志字符
options 字符 描述
O MYSQLND_DEBUG_FLUSH
A/a MYSQLND_DEBUG_APPEND
F MYSQLND_DEBUG_DUMP_FILE
i MYSQLND_DEBUG_DUMP_PID
L MYSQLND_DEBUG_DUMP_LINE
m MYSQLND_DEBUG_TRACE_MEMORY_CALLS
n MYSQLND_DEBUG_DUMP_LEVEL
o 输出到文件
T MYSQLND_DEBUG_DUMP_TIME
t MYSQLND_DEBUG_DUMP_TRACE
x MYSQLND_DEBUG_PROFILE_CALLS

返回值

始终返回true

变更日志

版本 描述
8.0.0 此函数现在始终返回true。之前它在失败时返回false

示例

示例 #1 生成跟踪文件

<?php

/* 在本地(客户端)机器上的 '/tmp/client.trace' 中创建跟踪文件: */
mysqli_debug("d:t:o,/tmp/client.trace");

?>

注释

注意:

要使用mysqli_debug()函数,必须编译 MySQL 客户端库以支持调试。

参见

添加注释

用户贡献的注释 3 个注释

Peter
10 年前
是否可以提供更多文档,以及一个小型(但可运行的)示例脚本来说明如何使用它?

一些问题(我在几十个教程中都见过“相同”的代码示例):-

(我仅使用大写字母来强调)

问题:D:T:O 代表什么?未解释。

问题:我们是否*仅*在一个自包含的脚本中使用这三行?这是否记录所有将来的 MYSQL 命令?

问题:- 我们是否将该行放在

- 我们连接到 MYSQL 后立即?
- 在我们连接到 MYSQL 之前?
- 在我们怀疑出错之前?
riversnowchang at gmail dot com
6 年前
以下是关于 mysqli_debug() 的调试选项的信息

O,o:MYSQLND_DEBUG_FLUSH
A,a:MYSQLND_DEBUG_APPEND
F:MYSQLND_DEBUG_DUMP_FILE
L:MYSQLND_DEBUG_DUMP_LINE
m:MYSQLND_DEBUG_TRACE_MEMORY_CALLS
n:MYSQLND_DEBUG_DUMP_LEVEL
o:输出到文件
T:MYSQLND_DEBUG_DUMP_TIME
t:MYSQLND_DEBUG_DUMP_TRACE
x:MYSQLND_DEBUG_PROFILE_CALLS
f:? 仍在调查

例如,mysqli_debug("T:n:t:m:x:F:L:o,/tmp/client.trace");
mysqlnd 将把时间、级别、跟踪、内存调用、性能分析调用、文件、行写入 client.trace 文件。

22:35:42.704501 ../mysqlnd_connection.c: 269 0:>mysqlnd_connection_init
22:35:42.704538 ../mysqlnd_driver.c: 10 1:| >mysqlnd_driver::get_connection
22:35:42.704549 ../mysqlnd_driver.c: 10 2:| | info : persistent=1
22:35:42.704558 ../mysqlnd_alloc.c: 21 2:| | >_mysqlnd_pecalloc
22:35:42.704570 ../mysqlnd_alloc.c: 23 2:| | <_mysqlnd_pecalloc (total=3 own=3 in_calls=0)
22:35:42.704602 ../mysqlnd_alloc.c: 21 2:| | >_mysqlnd_pecalloc
22:35:42.704626 ../mysqlnd_alloc.c: 23 2:| | <_mysqlnd_pecalloc (total=2 own=2 in_calls=0)
22:35:42.704650 ../mysqlnd_connection.c: 15 2:| | >mysqlnd_error_info_init
22:35:42.704675 ../mysqlnd_connection.c: 10 3:| | | >mysqlnd_error_info::reset
22:35:42.704697 ../mysqlnd_connection.c: 10 3:| | | <mysqlnd_error_info::reset (total=1 own=1 in_calls=0)
22:35:42.704725 ../mysqlnd_connection.c: 16 2:| | <mysqlnd_error_info_init (total=51 own=50 in_calls=1)
22:35:42.704744 ../mysqlnd_connection.c: 21 2:| | >mysqlnd_connection_state_init

如果有什么问题,请告诉我。
Domenic
6 年前
看起来可以参考这份手册

http://tiebing.blogspot.com.au/2011/10/cc-dbug-library.html

(我还没有测试过)
To Top