PHP 断点调试
我使用的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]