mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-07-23 16:45:35 +08:00
1 line
5.0 KiB
JavaScript
1 line
5.0 KiB
JavaScript
(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{764:function(t,s,a){"use strict";a.r(s);var n=a(84),r=Object(n.a)({},(function(){var t=this,s=t._self._c;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"调试"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#调试"}},[t._v("#")]),t._v(" 调试")]),t._v(" "),s("p",[t._v("在日常开发中,调试是一个重要的环节。在这里,我们将介绍如何在框架中调试。")]),t._v(" "),s("h2",{attrs:{id:"日志记录"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#日志记录"}},[t._v("#")]),t._v(" 日志记录")]),t._v(" "),s("p",[t._v("框架提供了一个日志记录组件,可以用来记录应用程序的运行日志。日志记录组件的使用方法请参考 "),s("a",{attrs:{href:"/components/common/logging"}},[t._v("日志记录")]),t._v("。")]),t._v(" "),s("h2",{attrs:{id:"打印变量"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#打印变量"}},[t._v("#")]),t._v(" 打印变量")]),t._v(" "),s("p",[t._v("框架集成了 "),s("a",{attrs:{href:"https://symfony.com/doc/current/components/var_dumper.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("VarDumper"),s("OutboundLink")],1),t._v(" 组件,可以用来打印变量的值。")]),t._v(" "),s("div",{staticClass:"language-php line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("dump")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$var")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br")])]),s("h2",{attrs:{id:"调试工具"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#调试工具"}},[t._v("#")]),t._v(" 调试工具")]),t._v(" "),s("p",[t._v("根据运行环境的不同(Swoole、Workerman 等),你可以使用不同的调试工具。")]),t._v(" "),s("p",[t._v("例如,你可以使用 "),s("a",{attrs:{href:"https://xdebug.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Xdebug"),s("OutboundLink")],1),t._v(" 或 "),s("a",{attrs:{href:"https://github.com/swoole/yasd",target:"_blank",rel:"noopener noreferrer"}},[t._v("yasd"),s("OutboundLink")],1),t._v(" 等。这类工具的使用方式可参照对应文档。")]),t._v(" "),s("p",[t._v("或者,你也可以在代码中使用 psysh 下断点并查看变量。但在使用 psysh 时要注意,在多进程模式(多 Worker、含用户进程、TaskWorker 等模式)下,会出现未定义的行为,最好在单进程模式下使用。")]),t._v(" "),s("div",{staticClass:"language-php line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-php"}},[s("code",[s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$x")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("123")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ... 你的代码")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("eval")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token function"}},[s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("Psy"),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("\\")]),t._v("sh")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// 下断点位置")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// ... 你的代码")]),t._v("\n"),s("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$y")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),s("span",{pre:!0,attrs:{class:"token number"}},[t._v("456")]),s("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(";")]),t._v("\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br"),s("span",{staticClass:"line-number"},[t._v("2")]),s("br"),s("span",{staticClass:"line-number"},[t._v("3")]),s("br"),s("span",{staticClass:"line-number"},[t._v("4")]),s("br"),s("span",{staticClass:"line-number"},[t._v("5")]),s("br")])]),s("h2",{attrs:{id:"热更新"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#热更新"}},[t._v("#")]),t._v(" 热更新")]),t._v(" "),s("p",[t._v("框架提供了热更新功能,可以在不重启应用程序的情况下更新代码,方便调试。热更新功能的使用方法请参考 "),s("a",{attrs:{href:"/components/common/hot-update"}},[t._v("热更新")]),t._v("。")])])}),[],!1,null,null,null);s.default=r.exports}}]); |