You're debugging your script using IDE which require valid xdebug.idekey
to be present in the session which probably isn't passed correctly to the forked process.
It's probably the bug of XDebug (see: #938) which doesn't debug well the forked processes.
I assume you've xdebug.remote_port
working correctly and there is no any communication issue. Remote debugging generates log file (defined by xdebug.remote_log
), so you should check further debugger communications details there.
As for workaround, you should debug your script manually by calling the functions: xdebug_start_trace()
and xdebug_stop_trace()
.
In case debugging on demand won't work with forked processes, enable xdebug.auto_trace
, restart Apache, so all forked processes can be debugged properly which will generate huge trace file which you can analyze (defined by xdebug.trace_output_dir
/xdebug.trace_output_name
).
Check my xdebug.ini
for suggestions, especially these settings are useful to see all the details:
; Data
xdebug.default_enable = 1 ; bool: The stacktraces will be shown by default on an error event.
xdebug.collect_vars = 1 ; bool: Gather information about which variables are used in a certain scope.
xdebug.show_local_vars=1 ; int: Generate stack dumps in error situations.
xdebug.collect_assignments=1 ; bool: Controls whether Xdebug should add variable assignments to function traces.
xdebug.collect_params=4 ; int1-4: Collect the parameters passed to functions when a function call is recorded.
xdebug.collect_return=1 ; bool: Write the return value of function calls to the trace files.
xdebug.var_display_max_children=256 ; int: Amount of array children and object's properties are shown.
xdebug.var_display_max_data=1024 ; int: Max string length that is shown when variables are displayed.
xdebug.var_display_max_depth=5 ; int: How many nested levels of array/object elements are displayed.
xdebug.show_mem_delta=0 ; int: Show the difference in memory usage between function calls.
xdebug.show_exception_trace=0 ; bool: Show a stack trace whenever an exception is raised.
xdebug.max_nesting_level=200 ; int: Controls the protection mechanism for infinite recursion protection.
If XDebug still won't work, then consider using phpdbg
instead.
For suggestions how to debug Batch API process, see: How to debug Batch API more efficiently?