设为首页 收藏本站
查看: 563|回复: 0

[经验分享] PHP 断点调试

[复制链接]

尚未签到

发表于 2017-3-21 06:06:01 | 显示全部楼层 |阅读模式
  我使用的xamp 搭建的的php集成环境。
  默认情况下,xamp没有开启xdebug功能,但是x-debug dll及配置文件均已写入php.ini 中了。
  1. 启用x-debug:
  php.ini 去掉1008行注释:
  zend_extension = "D:/Program Files/XAMPP/xampp/php/ext/php_xdebug.dll"
  参考http://netbeans.org/kb/docs/php/debugging_zh_CN.html
  2. 开启php.ini 中的调试功能
  ; xdebug.auto_trace; Type: boolean, Default value: 0; When this setting is set to on, the tracing of function calls will be enabled just before the; script is run. This makes it possible to trace code in the auto_prepend_file.xdebug.auto_trace = 0; xdebug.collect_includes; Type: boolean, Default value: 1; This setting, defaulting to On, controls whether Xdebug should write the filename used in include; (), include_once(), require() or require_once() to the trace files.xdebug.collect_includes = 1; xdebug.collect_params; Type: integer, Default value: 0;; This setting, defaulting to 0, controls whether Xdebug should collect the parameters passed to; functions when a function call is recorded in either the function trace or the stack trace.xdebug.collect_params = 0; xdebug.collect_return; Type: boolean, Default value: 0; This setting, defaulting to Off, controls whether Xdebug should write the return value of function; calls to the trace files.xdebug.collect_return = 0; xdebug.collect_vars; Type: boolean, Default value: Off; This setting tells Xdebug to gather information about which variables are used in a certain scope.; This analysis can be quite slow as Xdebug has to reverse engineer PHP's opcode arrays. This setting; will not record which values the different variables have, for that use xdebug.collect_params. This; setting needs to be enabled only if you wish to use xdebug_get_declared_vars().xdebug.collect_vars = "Off"; xdebug.default_enable; Type: boolean, Default value: On; If this setting is On then stacktraces will be shown by default on an error event. You can disable; showing stacktraces from your code with xdebug_disable(). As this is one of the basic functions of; Xdebug, it is advisable to leave this setting set to 'On'.xdebug.default_enable = "On"; xdebug.dump.*; Type: string, Default value: Empty; * = COOKIE, FILES, GET, POST, REQUEST, SERVER, SESSION. These seven settings control which data; from the superglobals is shown when an error situation occurs. Each php.ini setting can consist of; a comma seperated list of variables from this superglobal to dump, but make sure you do not add; spaces in this setting. In order to dump the REMOTE_ADDR and the REQUEST_METHOD when an error; occurs, add this setting:;; xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD; xdebug.dump.SERVER = REMOTE_ADDR,REQUEST_METHOD;xdebug.dump.COOKIE = "";xdebug.dump.FILES = "";xdebug.dump.GET = "";xdebug.dump.POST = "";xdebug.dump.REQUEST = "";xdebug.dump.SERVER = "";xdebug.dump.SESSION = ""; xdebug.dump_globals; Type: boolean, Default value: 1; Controls whether the values of the superglobals as defined by the xdebug.dump.* settings whould be; shown or not.xdebug.dump_globals = 1; xdebug.dump_once; Type: boolean, Default value: 1; Controls whether the values of the superglobals should be dumped on all error situations (set to; Off) or only on the first (set to On).xdebug.dump_once = 1; xdebug.dump_undefined; Type: boolean, Default value: 0; If you want to dump undefined values from the superglobals you should set this setting to On,; otherwise leave it set to Off.xdebug.dump_undefined = 0; xdebug.extended_info; Type: integer, Default value: 1; Controls whether Xdebug should enforce 'extended_info' mode for the PHP parser; this allows Xdebug; to do file/line breakpoints with the remote debugger. When tracing or profiling scripts you; generally want to turn off this option as PHP's generated oparrays will increase with about a third; of the size slowing down your scripts. This setting can not be set in your scripts with ini_set(),; but only in php.ini.xdebug.extended_info = 1; xdebug.file_link_format; Type: string, Default value: *empty string* , Introduced in Xdebug 2.1;; This setting determines the format of the links that are made in the display of stack traces where; file names are used. This allows IDEs to set up a link-protocol that makes it possible to go; directly to a line and file by clicking on the filenames that Xdebug shows in stack traces.;xdebug.file_link_format = ""; xdebug.idekey; Type: string, Default value: *complex*; Controls which IDE Key Xdebug should pass on to the DBGp debugger handler. The default is based on; environment settings. First the environment setting DBGP_IDEKEY is consulted, then USER and as last; USERNAME. The default is set to the first environment variable that is found. If none could be; found the setting has as default ''.;xdebug.idekey = ""; xdebug.manual_url; Type: string, Default value: http://www.php.net; This is the base url for the links from the function traces and error message to the manual pages; of the function from the message. It is advisable to set this setting to use the closest mirror.;xdebug.manual_url = "http://www.php.net"; xdebug.max_nesting_level; Type: integer, Default value: 100; Controls the protection mechanism for infinite recursion protection. The value of this setting is; the maximum level of nested functions that are allowed before the script will be aborted.;xdebug.max_nesting_level = 100; xdebug.overload_var_dump; Type: boolean, Default value: 1 , Introduced in Xdebug 2.1; By default Xdebug overloads var_dump() with its own improved version for displaying variables when; the html_errors php.ini setting is set to 1. In case you do not want that, you can set this setting; to 0, but check first if it's not smarter to turn off html_errors.;xdebug.overload_var_dump = 1; xdebug.profiler_append; Type: integer, Default value: 0; When this setting is set to 1, profiler files will not be overwritten when a new request would map; to the same file (depnding on the xdebug.profiler_output_name setting. Instead the file will be; appended to with the new profile.xdebug.profiler_append = 0; xdebug.profiler_enable; Type: integer, Default value: 0; Enables Xdebug's profiler which creates files in the profile output directory. Those files can be; read by KCacheGrind to visualize your data. This setting can not be set in your script with ini_set; ().xdebug.profiler_enable = 0; xdebug.profiler_enable_trigger; Type: integer, Default value: 0; When this setting is set to 1, you can trigger the generation of profiler files by using the; XDEBUG_PROFILE GET/POST parameter. This will then write the profiler data to defined directory.xdebug.profiler_enable_trigger = 0; xdebug.profiler_output_dir; Type: string, Default value: /tmp; The directory where the profiler output will be written to, make sure that the user who the PHP; will be running as has write permissions to that directory. This setting can not be set in your; script with ini_set().xdebug.profiler_output_dir = "D:/Program Files/XAMPP/xampp/tmp"; xdebug.profiler_output_name; Type: string, Default value: cachegrind.out.%p;; This setting determines the name of the file that is used to dump traces into. The setting; specifies the format with format specifiers, very similar to sprintf() and strftime(). There are; several format specifiers that can be used to format the file name.;; See the xdebug.trace_output_name documentation for the supported specifiers.xdebug.profiler_output_name = "xdebug_profile.%p"; xdebug.remote_autostart; Type: boolean, Default value: 0; Normally you need to use a specific HTTP GET/POST variable to start remote debugging (see Remote; Debugging). When this setting is set to 'On' Xdebug will always attempt to start a remote debugging; session and try to connect to a client, even if the GET/POST/COOKIE variable was not present.xdebug.remote_autostart = 0; xdebug.remote_enable; Type: boolean, Default value: 0; This switch controls whether Xdebug should try to contact a debug client which is listening on the; host and port as set with the settings xdebug.remote_host and xdebug.remote_port. If a connection; can not be established the script will just continue as if this setting was Off.xdebug.remote_enable = 1; xdebug.remote_handler; Type: string, Default value: dbgp; Can be either 'php3' which selects the old PHP 3 style debugger output, 'gdb' which enables the GDB; like debugger interface or 'dbgp' - the brand new debugger protocol. The DBGp protocol is more; widely supported by clients. See more information in the introduction for Remote Debugging.xdebug.remote_handler = "dbgp"; xdebug.remote_host; Type: string, Default value: localhost; Selects the host where the debug client is running, you can either use a host name or an IP; address.xdebug.remote_host = "localhost"; xdebug.remote_log; Type: string, Default value: none; If set to a value, it is used as filename to a file to which all remote debugger communications are; logged. The file is always opened in append-mode, and will therefore not be overwritten by default.; There is no concurrency protection available.;xdebug.remote_log = "none"; xdebug.remote_mode; Type: string, Default value: req;; Selects when a debug connection is initiated. This setting can have two different values:;; req;     Xdebug will try to connect to the debug client as soon as the script starts.; jit;     Xdebug will only try to connect to the debug client as soon as an error condition occurs.;xdebug.remote_mode = "req"; xdebug.remote_port; Type: integer, Default value: 9000; The port to which Xdebug tries to connect on the remote host. Port 9000 is the default for both the; client and the bundled debugclient. As many clients use this port number, it is best to leave this; setting unchanged.xdebug.remote_port = 9000; xdebug.show_exception_trace; Type: integer, Default value: 0; When this setting is set to 1, Xdebug will show a stack trace whenever an exception is raised -; even if this exception is actually caught.;xdebug.show_exception_trace = 0; xdebug.show_local_vars; Type: integer, Default value: 0; When this setting is set to something != 0 Xdebug's generated stack dumps in error situations will; also show all variables in the top-most scope. Beware that this might generate a lot of; information, and is therefore turned off by default.;xdebug.show_local_vars = 0; xdebug.show_mem_delta; Type: integer, Default value: 0; When this setting is set to something != 0 Xdebug's human-readable generated trace files will show; the difference in memory usage between function calls. If Xdebug is configured to generate; computer-readable trace files then they will always show this information.;xdebug.show_mem_delta = 0; xdebug.trace_format; Type: integer, Default value: 0; The format of the trace file.;; See the introduction of Function Traces for a few examples.;xdebug.trace_format = 0; xdebug.trace_options; Type: integer, Default value: 0; When set to '1' the trace files will be appended to, instead of being overwritten in subsequent; requests.;xdebug.trace_options = 0; xdebug.trace_output_dir; Type: string, Default value: /tmp; The directory where the tracing files will be written to, make sure that the user who the PHP will; be running as has write permissions to that directory.; xdebug.trace_output_namexdebug.trace_output_dir = "D:/Program Files/XAMPP/xampp/tmp"; Type: string, Default value: trace.%c;; This setting determines the name of the file that is used to dump traces into. The setting; specifies the format with format specifiers, very similar to sprintf() and strftime(). There are; several format specifiers that can be used to format the file name. The '.xt' extension is always; added automatically.;xdebug.trace_output_name = "trace.%c"; xdebug.var_display_max_children; Type: integer, Default value: 128; Controls the amount of array children and object's properties are shown when variables are; displayed with either xdebug_var_dump(), xdebug.show_local_vars or through Function Traces. This; setting does not have any influence on the number of children that is send to the client through; the Remote Debugging feature.;xdebug.var_display_max_children = 128; xdebug.var_display_max_data; Type: integer, Default value: 512; Controls the maximum string length that is shown when variables are displayed with either; xdebug_var_dump(), xdebug.show_local_vars or through Function Traces. This setting does not have; any influence on the amount of data that is send to the client through the Remote Debugging; feature.;xdebug.var_display_max_data = 512; xdebug.var_display_max_depth; Type: integer, Default value: 3; Controls how many nested levels of array elements and object properties are when variables are; displayed with either xdebug_var_dump(), xdebug.show_local_vars or through Function Traces. This; setting does not have any influence on the depth of children that is send to the client through the; Remote Debugging feature.;xdebug.var_display_max_depth = 3
  需要注意的是:要将
  xdebug.remote_enable = 1
  值设置为1,否则无法进行断点调试。
  相关php断点调试,可参考NetBeans 官方教程:
在 NetBeans IDE 中调试 PHP 源代码
  http://netbeans.org/kb/docs/php/debugging_zh_CN.html
  虽然不如VS那么强大,但是基本功能都还是有的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-352651-1-1.html 上篇帖子: php 下安装 memcache 下篇帖子: Windows下配置PHP环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表