diff --git a/Server/application/common.php b/Server/application/common.php
index c1361ea5..cad1de58 100644
--- a/Server/application/common.php
+++ b/Server/application/common.php
@@ -509,3 +509,21 @@ if (!function_exists('exit_data')) {
exit();
}
}
+
+/**
+ * 调试打印变量并终止程序
+ * @return void
+ */
+function dd()
+{
+ call_user_func_array(['app\\common\\helper\\Debug', 'dd'], func_get_args());
+}
+
+/**
+ * 调试打印变量但不终止程序
+ * @return void
+ */
+function dump()
+{
+ call_user_func_array(['app\\common\\helper\\Debug', 'dump'], func_get_args());
+}
diff --git a/Server/application/common/helper/Debug.php b/Server/application/common/helper/Debug.php
new file mode 100644
index 00000000..bb824d42
--- /dev/null
+++ b/Server/application/common/helper/Debug.php
@@ -0,0 +1,354 @@
+
调试输出';
+ echo '';
+ echo '';
+
+ $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);
+ $file = isset($trace[0]['file']) ? $trace[0]['file'] : '未知文件';
+ $line = isset($trace[0]['line']) ? $trace[0]['line'] : '未知行号';
+
+ echo '';
+
+ foreach ($args as $index => $arg) {
+ echo '';
+ echo '
变量 #' . ($index + 1) . '
';
+ echo '
' . self::formatVar($arg) . '
';
+ echo '
';
+ }
+
+ // 打印调用栈
+ echo '调用栈
';
+ echo '';
+ $traces = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT);
+ foreach ($traces as $i => $t) {
+ if ($i === 0) continue; // 跳过当前函数
+ $class = isset($t['class']) ? $t['class'] : '';
+ $type = isset($t['type']) ? $t['type'] : '';
+ $function = isset($t['function']) ? $t['function'] : '';
+ $file = isset($t['file']) ? $t['file'] : '未知文件';
+ $line = isset($t['line']) ? $t['line'] : '未知行号';
+
+ echo '
';
+ echo '#' . $i . ' ';
+ echo $file . ' (' . $line . '): ';
+ if ($class) {
+ echo $class . $type . $function . '()';
+ } else {
+ echo $function . '()';
+ }
+ echo '
';
+ }
+ echo '
';
+
+ echo '