Added: xdebug/trunk/tests/remote_log1.phpt
===================================================================
--- xdebug/trunk/tests/remote_log1.phpt (rev 0)
+++ xdebug/trunk/tests/remote_log1.phpt 2011-05-27 02:22:45 UTC (rev 3441)
@@ -0,0 +1,20 @@
+--TEST--
+Test for Xdebug's remote log (can not connect, no remote callback)
+--INI--
+xdebug.remote_log=/tmp/remote-log1.txt
+xdebug.remote_autostart=1
+xdebug.remote_connect_back=0
+xdebug.remote_host=doesnotexist
+xdebug.remote_port=9002
+--FILE--
+
+--EXPECTF--
+3
+Log opened at %d-%d-%d %d:%d:%d
+I: Connecting to configured address/port: doesnotexist:9002.
+E: Could not connect to client. :-(
+Log closed at %d-%d-%d %d:%d:%d
Added: xdebug/trunk/tests/remote_log2.phpt
===================================================================
--- xdebug/trunk/tests/remote_log2.phpt (rev 0)
+++ xdebug/trunk/tests/remote_log2.phpt 2011-05-27 02:22:45 UTC (rev 3441)
@@ -0,0 +1,21 @@
+--TEST--
+Test for Xdebug's remote log (can not connect, with not-found remote callback)
+--INI--
+xdebug.remote_log=/tmp/remote-log2.txt
+xdebug.remote_autostart=1
+xdebug.remote_connect_back=1
+xdebug.remote_host=doesnotexist2
+xdebug.remote_port=9003
+--FILE--
+
+--EXPECTF--
+3
+Log opened at %d-%d-%d %d:%d:%d
+I: Checking remote connect back address.
+W: Remote address not found, connecting to configured address/port: doesnotexist2:9003. :-|
+E: Could not connect to client. :-(
+Log closed at %d-%d-%d %d:%d:%d
Added: xdebug/trunk/tests/remote_log3.phpt
===================================================================
--- xdebug/trunk/tests/remote_log3.phpt (rev 0)
+++ xdebug/trunk/tests/remote_log3.phpt 2011-05-27 02:22:45 UTC (rev 3441)
@@ -0,0 +1,74 @@
+--TEST--
+Test for Xdebug's remote log (can connect, without remote callback)
+--FILE--
+
+--EXPECTF--
+
+
+
+-> step_into -i 1
+
+
+
+-> breakpoint_set -i 2 -t line -n 8
+
+
+
+-> run -i 3
+
+
+
+-> property_get -i 4 -n param2
+
+
+
+-> property_get -i 5 -n param3
+
+
+
+-> detach -i 6
+
+
+
+Log opened at %d-%d-%d %d:%d:%d
+I: Connecting to configured address/port: localhost:9991.
+I: Connected to client.
+-> %s
+
+<- step_into -i 1
+I: The debug session is succesfully initiated! :-)
+-> %s
+
+<- breakpoint_set -i 2 -t line -n 8
+-> %s
+
+<- run -i 3
+-> %s
+
+<- property_get -i 4 -n param2
+-> %s
+
+<- property_get -i 5 -n param3
+-> %s
+
+<- detach -i 6
+-> %s
+
+Log closed at %d-%d-%d %d:%d:%d
Modified: xdebug/trunk/usefulstuff.c
===================================================================
--- xdebug/trunk/usefulstuff.c 2011-05-02 17:49:34 UTC (rev 3440)
+++ xdebug/trunk/usefulstuff.c 2011-05-27 02:22:45 UTC (rev 3441)
@@ -40,6 +40,8 @@
#include "ext/standard/flock_compat.h"
#include "main/php_ini.h"
+ZEND_EXTERN_MODULE_GLOBALS(xdebug)
+
#define READ_BUFFER_SIZE 128
char* xdebug_fd_read_line_delim(int socket, fd_buf *context, int type, unsigned char delim, int *length)
@@ -640,3 +642,30 @@
return fname.l;
}
+
+void xdebug_open_log(TSRMLS_D)
+{
+ /* initialize remote log file */
+ XG(remote_log_file) = NULL;
+ if (XG(remote_log) && strlen(XG(remote_log))) {
+ XG(remote_log_file) = xdebug_fopen(XG(remote_log), "a", NULL, NULL);
+ }
+ if (XG(remote_log_file)) {
+ char *timestr = xdebug_get_time();
+ fprintf(XG(remote_log_file), "Log opened at %s\n", timestr);
+ fflush(XG(remote_log_file));
+ xdfree(timestr);
+ }
+}
+
+void xdebug_close_log(TSRMLS_D)
+{
+ if (XG(remote_log_file)) {
+ char *timestr = xdebug_get_time();
+ fprintf(XG(remote_log_file), "Log closed at %s\n\n", timestr);
+ fflush(XG(remote_log_file));
+ xdfree(timestr);
+ fclose(XG(remote_log_file));
+ XG(remote_log_file) = NULL;
+ }
+}
Modified: xdebug/trunk/xdebug_handler_dbgp.c
===================================================================
--- xdebug/trunk/xdebug_handler_dbgp.c 2011-05-02 17:49:34 UTC (rev 3440)
+++ xdebug/trunk/xdebug_handler_dbgp.c 2011-05-27 02:22:45 UTC (rev 3441)
@@ -2349,18 +2349,6 @@
XG(stdio).php_header_write = NULL;
#endif
- /* initialize remote log file */
- XG(remote_log_file) = NULL;
- if (XG(remote_log) && strlen(XG(remote_log))) {
- XG(remote_log_file) = xdebug_fopen(XG(remote_log), "a", NULL, NULL);
- }
- if (XG(remote_log_file)) {
- char *timestr = xdebug_get_time();
- fprintf(XG(remote_log_file), "Log opened at %s\n", timestr);
- fflush(XG(remote_log_file));
- xdfree(timestr);
- }
-
response = xdebug_xml_node_init("init");
xdebug_xml_add_attribute(response, "xmlns", "urn:debugger_protocol_v1");
xdebug_xml_add_attribute(response, "xmlns:xdebug", "http://xdebug.org/dbgp/xdebug");
@@ -2479,14 +2467,7 @@
xdfree(context->buffer);
}
- if (XG(remote_log_file)) {
- char *timestr = xdebug_get_time();
- fprintf(XG(remote_log_file), "Log closed at %s\n\n", timestr);
- fflush(XG(remote_log_file));
- xdfree(timestr);
- fclose(XG(remote_log_file));
- XG(remote_log_file) = NULL;
- }
+ xdebug_close_log(TSRMLS_C);
XG(remote_enabled) = 0;
return 1;
}
Modified: xdebug/trunk/xdebug_stack.c
===================================================================
--- xdebug/trunk/xdebug_stack.c 2011-05-02 17:49:34 UTC (rev 3440)
+++ xdebug/trunk/xdebug_stack.c 2011-05-27 02:22:45 UTC (rev 3441)
@@ -444,33 +444,46 @@
void xdebug_init_debugger(TSRMLS_D)
{
+ xdebug_open_log(TSRMLS_C);
if (XG(remote_connect_back)) {
zval **remote_addr = NULL;
+ fprintf(XG(remote_log_file), "I: Checking remote connect back address.\n");
if (zend_hash_find(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]), "X_HTTP_FORWARDED_FOR", 21, (void**)&remote_addr) == FAILURE) {
zend_hash_find(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]), "REMOTE_ADDR", 12, (void**)&remote_addr);
}
if (remote_addr) {
+ fprintf(XG(remote_log_file), "I: Remote address found, connecting to %s:%d.\n", Z_STRVAL_PP(remote_addr), XG(remote_port));
XG(context).socket = xdebug_create_socket(Z_STRVAL_PP(remote_addr), XG(remote_port));
} else {
+ fprintf(XG(remote_log_file), "W: Remote address not found, connecting to configured address/port: %s:%d. :-|\n", XG(remote_host), XG(remote_port));
XG(context).socket = xdebug_create_socket(XG(remote_host), XG(remote_port));
}
} else {
+ fprintf(XG(remote_log_file), "I: Connecting to configured address/port: %s:%d.\n", XG(remote_host), XG(remote_port));
XG(context).socket = xdebug_create_socket(XG(remote_host), XG(remote_port));
}
if (XG(context).socket >= 0) {
+ fprintf(XG(remote_log_file), "I: Connected to client. :-)\n");
XG(remote_enabled) = 0;
/* Get handler from mode */
XG(context).handler = xdebug_handler_get(XG(remote_handler));
if (!XG(context).handler) {
zend_error(E_WARNING, "The remote debug handler '%s' is not supported.", XG(remote_handler));
+ fprintf(XG(remote_log_file), "E: The remote debug handler '%s' is not supported. :-(\n", XG(remote_handler));
} else if (!XG(context).handler->remote_init(&(XG(context)), XDEBUG_REQ)) {
/* The request could not be started, ignore it then */
+ fprintf(XG(remote_log_file), "E: The debug session could not be started. :-(\n");
} else {
/* All is well, turn off script time outs */
XG(remote_enabled) = 1;
}
+ } else {
+ fprintf(XG(remote_log_file), "E: Could not connect to client. :-(\n");
}
+ if (!XG(remote_enabled)) {
+ xdebug_close_log(TSRMLS_C);
+ }
}
void xdebug_do_jit(TSRMLS_D)