mirror of
https://github.com/php/presentations.git
synced 2026-03-23 23:22:22 +01:00
phpDay Xdebug talk
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<presentation css="10gen-strict.css">
|
||||
<presentation css="derick.css">
|
||||
<topic>PHP</topic>
|
||||
<title>PHP Deep Dive</title>
|
||||
<event>phpDay 2019</event>
|
||||
@@ -8,9 +8,10 @@
|
||||
<speaker>Derick Rethans</speaker>
|
||||
<email>derick@php.net</email>
|
||||
<twitter>derickr</twitter>
|
||||
<joindin>https://joind.in/XXXXX</joindin>
|
||||
<url>https://derickrethans.nl/talks/deepdive-phpday19</url>
|
||||
<joindin></joindin>
|
||||
|
||||
<slide>slides/mongodb/title.xml</slide>
|
||||
<slide>slides/xdebug/title.xml</slide>
|
||||
<slide>slides/mongodb/me.xml</slide>
|
||||
|
||||
<slide>slides/internals/title-agenda.xml</slide>
|
||||
@@ -114,6 +115,7 @@ Useful implementations
|
||||
|
||||
|
||||
<slide>slides/mongodb/questions.xml</slide>
|
||||
<slide>slides/xdebug/phpinternalsnews.xml</slide>
|
||||
|
||||
<slide>slides/mongodb/resources.xml</slide>
|
||||
|
||||
|
||||
118
slides/xdebug/breakpoint-behaviour.xml
Normal file
118
slides/xdebug/breakpoint-behaviour.xml
Normal file
@@ -0,0 +1,118 @@
|
||||
<slide>
|
||||
<title>Breakpoint Behaviour</title>
|
||||
|
||||
<div effect="fade-out">
|
||||
<table class="two">
|
||||
<tr><td>
|
||||
<example><![CDATA[
|
||||
1: <?php
|
||||
2: function scoped()
|
||||
3: {
|
||||
4: $func = function()
|
||||
5: {
|
||||
6: $a = array( // breakpoint
|
||||
7: 1 => "first",
|
||||
8: 2 => "second",
|
||||
9: );
|
||||
10: };
|
||||
11:
|
||||
12: $func();
|
||||
13: }
|
||||
14:
|
||||
15: scoped();
|
||||
16: scoped();
|
||||
17: ?>
|
||||
]]></example>
|
||||
</td><td>
|
||||
<example>
|
||||
function name: scoped
|
||||
compiled vars: !0 = $func
|
||||
line #* E I O op return operands
|
||||
|
||||
2 0 E > EXT_NOP
|
||||
4 1 EXT_STMT
|
||||
2 DECLARE_LAMBDA_FUNCTION '%00…closure.php0x7f295f0c207e'
|
||||
|
||||
12 3 EXT_STMT
|
||||
4 INIT_DYNAMIC_CALL !0
|
||||
5 EXT_FCALL_BEGIN
|
||||
6 DO_FCALL
|
||||
7 EXT_FCALL_END
|
||||
13 8 EXT_STMT
|
||||
9 > RETURN null
|
||||
|
||||
|
||||
function name: {closure}
|
||||
|
||||
line #* E I O op return operands
|
||||
|
||||
4 0 E > EXT_NOP
|
||||
7 1 EXT_STMT
|
||||
|
||||
10 2 EXT_STMT
|
||||
3 > RETURN null
|
||||
|
||||
</example>
|
||||
</td></tr></table>
|
||||
|
||||
</div>
|
||||
<div effect="fade-in">
|
||||
<table class="two">
|
||||
<tr><td>
|
||||
<example><![CDATA[
|
||||
1: <?php
|
||||
2: function scoped()
|
||||
3: {
|
||||
4: $func = function()
|
||||
5: {
|
||||
6: $a = array( // breakpoint
|
||||
7: 1 => "first",
|
||||
8: 2 => "second",
|
||||
9: );
|
||||
10: };
|
||||
11:
|
||||
12: $func();
|
||||
13: }
|
||||
14:
|
||||
15: scoped();
|
||||
16: scoped();
|
||||
17: ?>
|
||||
]]></example>
|
||||
<break/>
|
||||
<blurb>Turned off OPcache's optimiser →</blurb>
|
||||
</td><td>
|
||||
<example inline="2">
|
||||
function name: scoped
|
||||
*compiled vars: !0 = $func*
|
||||
line #* E I O op return operands
|
||||
|
||||
2 0 E > EXT_NOP
|
||||
4 1 EXT_STMT
|
||||
2 DECLARE_LAMBDA_FUNCTION '%00…closure.php0x7efeba02b07e'
|
||||
* 10 3 ASSIGN !0, ~1*
|
||||
12 4 EXT_STMT
|
||||
5 INIT_DYNAMIC_CALL !0
|
||||
6 EXT_FCALL_BEGIN
|
||||
7 DO_FCALL
|
||||
8 EXT_FCALL_END
|
||||
13 9 EXT_STMT
|
||||
10 > RETURN null
|
||||
|
||||
|
||||
function name: {closure}
|
||||
compiled vars: !0 = $a
|
||||
line #* E I O op return operands
|
||||
|
||||
4 0 E > EXT_NOP
|
||||
7 1 EXT_STMT
|
||||
* 2 ASSIGN !0, &lt;array>*
|
||||
10 3 EXT_STMT
|
||||
4 > RETURN null
|
||||
</example>
|
||||
</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div effect="fade-in">
|
||||
<blurb class="big-centre">demo</blurb>
|
||||
</div>
|
||||
</slide>
|
||||
49
slides/xdebug/breakpoints-2.xml
Normal file
49
slides/xdebug/breakpoints-2.xml
Normal file
@@ -0,0 +1,49 @@
|
||||
<slide>
|
||||
<title>Missed Breakpoints</title>
|
||||
|
||||
<table class="two">
|
||||
<tr><td>
|
||||
<example inline="2"><![CDATA[
|
||||
|aaaaaa| 1| <?php
|
||||
|aaaaaa| 2| function demo($a, $b, $c, $d)
|
||||
|aaaaaa| 3| {
|
||||
*● |aaaaaa| 4| if ( // breakpoint here*
|
||||
|aaaaaa| 5| $a
|
||||
|aaaaaa| 6| && $b
|
||||
|aaaaaa| 7| && ($c || $d)
|
||||
|aaaaaa| 8| ) {
|
||||
|aaaaaa| 9| echo "It's true!";
|
||||
|aaaaaa| 10| }
|
||||
|aaaaaa| 11| }
|
||||
|aaaaaa| 12|
|
||||
|aaaaaa| 13| demo(true, true, true, false);
|
||||
]]></example>
|
||||
<div effect="fade-in-out">
|
||||
<blurb class="big-centre">demo</blurb>
|
||||
</div>
|
||||
</td>
|
||||
<td><div effect="fade-in">
|
||||
<example inline="2"><![CDATA[
|
||||
function name: demo
|
||||
number of ops: 14
|
||||
compiled vars: !0 = $a, !1 = $b, !2 = $c, !3 = $d
|
||||
line #* E I O op return operands
|
||||
2 0 E > EXT_NOP
|
||||
1 RECV !0
|
||||
2 RECV !1
|
||||
3 RECV !2
|
||||
4 RECV !3
|
||||
5 5 EXT_STMT
|
||||
6 > JMPZ !0, ->12
|
||||
6 7 > > JMPZ !1, ->12
|
||||
7 8 > > JMPNZ !2, ->10
|
||||
9 > > JMPZ !3, ->12
|
||||
9 10 > EXT_STMT
|
||||
11 ECHO 'It%27s+true%21'
|
||||
11 12 > EXT_STMT
|
||||
13 > RETURN null
|
||||
]]>
|
||||
</example>
|
||||
</div>
|
||||
</td></tr></table>
|
||||
</slide>
|
||||
20
slides/xdebug/code-reorgnisation.xml
Normal file
20
slides/xdebug/code-reorgnisation.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<slide>
|
||||
<title>Code Reorganisation</title>
|
||||
|
||||
<example inline="2">
|
||||
*derick@singlemalt:~/dev/php/xdebug-xdebug$ ls ***.[hc]*
|
||||
config.h xdebug_filter.c xdebug_monitor.c xdebug_superglobals.h
|
||||
php_xdebug.h xdebug_filter.h xdebug_monitor.h xdebug_trace_computerized.c
|
||||
usefulstuff.c xdebug_gc_stats.c xdebug_private.c xdebug_trace_computerized.h
|
||||
usefulstuff.h xdebug_gc_stats.h xdebug_private.h xdebug_trace_html.c
|
||||
xdebug_branch_info.c xdebug_handler_dbgp.c xdebug_profiler.c xdebug_trace_html.h
|
||||
xdebug_branch_info.h xdebug_handler_dbgp.h xdebug_profiler.h xdebug_trace_textual.c
|
||||
xdebug.c xdebug_handlers.c xdebug_set.c xdebug_trace_textual.h
|
||||
xdebug_code_coverage.c xdebug_handlers.h xdebug_set.h xdebug_tracing.c
|
||||
xdebug_code_coverage.h xdebug_hash.c xdebug_stack.c xdebug_tracing.h
|
||||
xdebug_com.c xdebug_hash.h xdebug_stack.h xdebug_var.c
|
||||
xdebug_com.h xdebug_llist.c xdebug_str.c xdebug_var.h
|
||||
xdebug_compat.c xdebug_llist.h xdebug_str.h xdebug_xml.c
|
||||
xdebug_compat.h xdebug_mm.h xdebug_superglobals.c xdebug_xml.h
|
||||
</example>
|
||||
</slide>
|
||||
77
slides/xdebug/config-settings-2.xml
Normal file
77
slides/xdebug/config-settings-2.xml
Normal file
@@ -0,0 +1,77 @@
|
||||
<slide>
|
||||
<title>Configuration Settings</title>
|
||||
|
||||
<table class="two">
|
||||
<tr>
|
||||
<td>
|
||||
<example inline="2">
|
||||
|aaaaaa|xdebug.|auto_trace
|
||||
|aaaaaa|xdebug.|cli_color
|
||||
|aaaaaa|xdebug.|collect_assignments
|
||||
|aaaaaa|xdebug.|collect_includes
|
||||
|aaaaaa|xdebug.|collect_params
|
||||
|aaaaaa|xdebug.|collect_return
|
||||
|aaaaaa|xdebug.|collect_vars
|
||||
*|0000ff|xdebug.coverage_enable|*
|
||||
|aaaaaa|xdebug.|default_enable
|
||||
|aaaaaa|xdebug.|dump.COOKIE
|
||||
|aaaaaa|xdebug.|dump.ENV
|
||||
|aaaaaa|xdebug.|dump.FILES
|
||||
|aaaaaa|xdebug.|dump.GET
|
||||
|aaaaaa|xdebug.|dump.POST
|
||||
|aaaaaa|xdebug.|dump.REQUEST
|
||||
|aaaaaa|xdebug.|dump.SERVER
|
||||
|aaaaaa|xdebug.|dump.SESSION
|
||||
|aaaaaa|xdebug.|dump_globals
|
||||
|aaaaaa|xdebug.|dump_once
|
||||
|aaaaaa|xdebug.|dump_undefined
|
||||
*xdebug.extended_info*
|
||||
|aaaaaa|xdebug.|file_link_format
|
||||
|aaaaaa|xdebug.|filename_format
|
||||
|aaaaaa|xdebug.|force_display_errors
|
||||
|aaaaaa|xdebug.|force_error_reporting
|
||||
|aaaaaa|xdebug.|gc_stats_enable
|
||||
*|00cc00|xdebug.gc_stats_output_dir|*
|
||||
|aaaaaa|xdebug.|gc_stats_output_name
|
||||
|aaaaaa|xdebug.|halt_level
|
||||
|aaaaaa|xdebug.|idekey
|
||||
|aaaaaa|xdebug.|max_nesting_level
|
||||
|aaaaaa|xdebug.|max_stack_frames
|
||||
|aaaaaa|xdebug.|overload_var_dump
|
||||
</example></td><td><example inline="2">
|
||||
|aaaaaa|xdebug.|profiler_aggregate
|
||||
|aaaaaa|xdebug.|profiler_append
|
||||
*|0000ff|xdebug.profiler_enable|*
|
||||
|aaaaaa|xdebug.|profiler_enable_trigger
|
||||
|aaaaaa|xdebug.|profiler_enable_trigger_value
|
||||
*|00cc00|xdebug.profiler_output_dir|*
|
||||
|aaaaaa|xdebug.|profiler_output_name
|
||||
|aaaaaa|xdebug.|remote_addr_header
|
||||
|aaaaaa|xdebug.|remote_autostart
|
||||
|aaaaaa|xdebug.|remote_connect_back
|
||||
|aaaaaa|xdebug.|remote_cookie_expire_time
|
||||
*|0000ff|xdebug.remote_enable|*
|
||||
*xdebug.remote_handler*
|
||||
|aaaaaa|xdebug.|remote_host
|
||||
|aaaaaa|xdebug.|remote_log
|
||||
|aaaaaa|xdebug.|remote_mode
|
||||
|aaaaaa|xdebug.|remote_port
|
||||
|aaaaaa|xdebug.|remote_timeout
|
||||
|aaaaaa|xdebug.|scream
|
||||
|aaaaaa|xdebug.|show_error_trace
|
||||
|aaaaaa|xdebug.|show_exception_trace
|
||||
|aaaaaa|xdebug.|show_local_vars
|
||||
|aaaaaa|xdebug.|show_mem_delta
|
||||
|aaaaaa|xdebug.|trace_enable_trigger
|
||||
|aaaaaa|xdebug.|trace_enable_trigger_value
|
||||
|aaaaaa|xdebug.|trace_format
|
||||
|aaaaaa|xdebug.|trace_options
|
||||
*|00cc00|xdebug.trace_output_dir|*
|
||||
|aaaaaa|xdebug.|trace_output_name
|
||||
|aaaaaa|xdebug.|var_display_max_children
|
||||
|aaaaaa|xdebug.|var_display_max_data
|
||||
|aaaaaa|xdebug.|var_display_max_depth
|
||||
|
||||
</example>
|
||||
</td></tr></table>
|
||||
</slide>
|
||||
77
slides/xdebug/config-settings-3.xml
Normal file
77
slides/xdebug/config-settings-3.xml
Normal file
@@ -0,0 +1,77 @@
|
||||
<slide>
|
||||
<title>Configuration Settings</title>
|
||||
|
||||
<table class="two">
|
||||
<tr>
|
||||
<td>
|
||||
<example inline="2">
|
||||
|aaaaaa|xdebug.|auto_trace
|
||||
|aaaaaa|xdebug.|cli_color
|
||||
|aaaaaa|xdebug.|collect_assignments
|
||||
|aaaaaa|xdebug.|collect_includes
|
||||
|aaaaaa|xdebug.|collect_params
|
||||
|aaaaaa|xdebug.|collect_return
|
||||
|aaaaaa|xdebug.|collect_vars
|
||||
|aaaaaa|xdebug.|coverage_enable
|
||||
|aaaaaa|xdebug.|default_enable
|
||||
|aaaaaa|xdebug.|dump.COOKIE
|
||||
|aaaaaa|xdebug.|dump.ENV
|
||||
|aaaaaa|xdebug.|dump.FILES
|
||||
|aaaaaa|xdebug.|dump.GET
|
||||
|aaaaaa|xdebug.|dump.POST
|
||||
|aaaaaa|xdebug.|dump.REQUEST
|
||||
|aaaaaa|xdebug.|dump.SERVER
|
||||
|aaaaaa|xdebug.|dump.SESSION
|
||||
|aaaaaa|xdebug.|dump_globals
|
||||
|aaaaaa|xdebug.|dump_once
|
||||
|aaaaaa|xdebug.|dump_undefined
|
||||
|aaaaaa|xdebug.|extended_info
|
||||
|aaaaaa|xdebug.|file_link_format
|
||||
|aaaaaa|xdebug.|filename_format
|
||||
|aaaaaa|xdebug.|force_display_errors
|
||||
|aaaaaa|xdebug.|force_error_reporting
|
||||
|aaaaaa|xdebug.|gc_stats_enable
|
||||
|aaaaaa|xdebug.|gc_stats_output_dir
|
||||
|aaaaaa|xdebug.|gc_stats_output_name
|
||||
|aaaaaa|xdebug.|halt_level
|
||||
|aaaaaa|xdebug.|idekey
|
||||
|aaaaaa|xdebug.|max_nesting_level
|
||||
|aaaaaa|xdebug.|max_stack_frames
|
||||
|aaaaaa|xdebug.|overload_var_dump
|
||||
</example></td><td><example inline="2">
|
||||
|aaaaaa|xdebug.|profiler_aggregate
|
||||
|aaaaaa|xdebug.|profiler_append
|
||||
|aaaaaa|xdebug.|pprofiler_enable
|
||||
|aaaaaa|xdebug.|profiler_enable_trigger
|
||||
|aaaaaa|xdebug.|profiler_enable_trigger_value
|
||||
|aaaaaa|xdebug.|profiler_output_dir
|
||||
|aaaaaa|xdebug.|profiler_output_name
|
||||
|aaaaaa|xdebug.|remote_addr_header
|
||||
|aaaaaa|xdebug.|remote_autostart
|
||||
|aaaaaa|xdebug.|remote_connect_back
|
||||
|aaaaaa|xdebug.|remote_cookie_expire_time
|
||||
|aaaaaa|xdebug.|remote_enable
|
||||
|aaaaaa|xdebug.|remote_handler
|
||||
|aaaaaa|xdebug.|remote_host
|
||||
|aaaaaa|xdebug.|remote_log
|
||||
|aaaaaa|xdebug.|remote_mode
|
||||
|aaaaaa|xdebug.|remote_port
|
||||
|aaaaaa|xdebug.|remote_timeout
|
||||
|aaaaaa|xdebug.|scream
|
||||
|aaaaaa|xdebug.|show_error_trace
|
||||
|aaaaaa|xdebug.|show_exception_trace
|
||||
|aaaaaa|xdebug.|show_local_vars
|
||||
|aaaaaa|xdebug.|show_mem_delta
|
||||
|aaaaaa|xdebug.|trace_enable_trigger
|
||||
|aaaaaa|xdebug.|trace_enable_trigger_value
|
||||
|aaaaaa|xdebug.|trace_format
|
||||
|aaaaaa|xdebug.|trace_options
|
||||
|aaaaaa|xdebug.|trace_output_dir
|
||||
|aaaaaa|xdebug.|trace_output_name
|
||||
|aaaaaa|xdebug.|var_display_max_children
|
||||
|aaaaaa|xdebug.|var_display_max_data
|
||||
|aaaaaa|xdebug.|var_display_max_depth
|
||||
|
||||
</example>
|
||||
</td></tr></table>
|
||||
</slide>
|
||||
77
slides/xdebug/config-settings-3b.xml
Normal file
77
slides/xdebug/config-settings-3b.xml
Normal file
@@ -0,0 +1,77 @@
|
||||
<slide>
|
||||
<title>Configuration Settings</title>
|
||||
|
||||
<table class="two">
|
||||
<tr>
|
||||
<td>
|
||||
<example inline="2">
|
||||
*|aaaaaa|xdebug.|auto_trace* ~xdebug.trace.autostart~
|
||||
*|aaaaaa|xdebug.|cli_color*
|
||||
|aaaaaa|xdebug.|debug.collect_assignments
|
||||
|aaaaaa|xdebug.|debug.collect_includes
|
||||
|aaaaaa|xdebug.|debug.collect_params
|
||||
|aaaaaa|xdebug.|debug.collect_return
|
||||
|aaaaaa|xdebug.|debug.collect_vars
|
||||
*|aaaaaa|xdebug.|coverage_enable* ~xdebug.mode~
|
||||
*|aaaaaa|xdebug.|default_enable* ~xdebug.mode~
|
||||
|aaaaaa|xdebug.|debug.dump.COOKIE
|
||||
|aaaaaa|xdebug.|debug.dump.ENV
|
||||
|aaaaaa|xdebug.|debug.dump.FILES
|
||||
|aaaaaa|xdebug.|debug.dump.GET
|
||||
|aaaaaa|xdebug.|debug.dump.POST
|
||||
|aaaaaa|xdebug.|debug.dump.REQUEST
|
||||
|aaaaaa|xdebug.|debug.dump.SERVER
|
||||
|aaaaaa|xdebug.|debug.dump.SESSION
|
||||
|aaaaaa|xdebug.|debug.dump_globals
|
||||
|aaaaaa|xdebug.|debug.dump_once
|
||||
|aaaaaa|xdebug.|debug.dump_undefined
|
||||
*|aaaaaa|xdebug.|extended_info*
|
||||
|aaaaaa|xdebug.|debug.file_link_format
|
||||
|aaaaaa|xdebug.|debug.filename_format
|
||||
|aaaaaa|xdebug.|debug.force_display_errors
|
||||
|aaaaaa|xdebug.|debug.force_error_reporting
|
||||
|aaaaaa|xdebug.|debug.gc_stats_enable
|
||||
*|aaaaaa|xdebug.|gc_stats_output_dir* ~xdebug.output_dir~
|
||||
*|aaaaaa|xdebug.|gc_stats_output_name* ~xdebug.output_name~
|
||||
|aaaaaa|xdebug.|debug.halt_level
|
||||
*|aaaaaa|xdebug.|idekey*
|
||||
|aaaaaa|xdebug.|debug.max_nesting_level
|
||||
|aaaaaa|xdebug.|debug.max_stack_frames
|
||||
|aaaaaa|xdebug.|debug.overload_var_dump
|
||||
</example></td><td><example inline="2">
|
||||
*|aaaaaa|xdebug.|profiler_aggregate*
|
||||
*|aaaaaa|xdebug.|profiler_append*
|
||||
*|aaaaaa|xdebug.|profiler_enable* ~xdebug.mode~
|
||||
*|aaaaaa|xdebug.|profiler_enable_trigger* ~xdebug.enable_trigger~
|
||||
*|aaaaaa|xdebug.|profiler_enable_trigger_value* ~xdebug.enable_trigger_value~
|
||||
*|aaaaaa|xdebug.|profiler_output_dir* ~xdebug.output_dir~
|
||||
*|aaaaaa|xdebug.|profiler_output_name* ~xdebug.output_name~
|
||||
|aaaaaa|xdebug.|remote.addr_header
|
||||
|aaaaaa|xdebug.|remote.autostart
|
||||
|aaaaaa|xdebug.|remote.connect_back
|
||||
|aaaaaa|xdebug.|remote.cookie_expire_time
|
||||
*|aaaaaa|xdebug.|remote_enable* ~xdebug.mode~
|
||||
*|aaaaaa|xdebug.|remote_handler*
|
||||
|aaaaaa|xdebug.|remote.host
|
||||
|aaaaaa|xdebug.|remote.log
|
||||
|aaaaaa|xdebug.|remote.mode
|
||||
|aaaaaa|xdebug.|remote.port
|
||||
|aaaaaa|xdebug.|remote.timeout
|
||||
*|aaaaaa|xdebug.|scream* ~always on ☺~
|
||||
|aaaaaa|xdebug.|debug.show_error_trace
|
||||
|aaaaaa|xdebug.|debug.show_exception_trace
|
||||
|aaaaaa|xdebug.|debug.show_local_vars
|
||||
*|aaaaaa|xdebug.|show_mem_delta*
|
||||
*|aaaaaa|xdebug.|trace_enable_trigger* ~xdebug.enable_trigger~
|
||||
*|aaaaaa|xdebug.|trace_enable_trigger_value* ~xdebug.enable_trigger_value~
|
||||
|aaaaaa|xdebug.|trace.format
|
||||
|aaaaaa|xdebug.|trace.options
|
||||
*|aaaaaa|xdebug.|trace_output_dir* ~xdebug.output_dir~
|
||||
*|aaaaaa|xdebug.|trace_output_name* ~xdebug.output_name~
|
||||
|aaaaaa|xdebug.|debug.var_display_max_children
|
||||
|aaaaaa|xdebug.|debug.var_display_max_data
|
||||
|aaaaaa|xdebug.|debug.var_display_max_depth
|
||||
|
||||
</example>
|
||||
</td></tr></table>
|
||||
</slide>
|
||||
@@ -7,6 +7,6 @@
|
||||
<bullet>*Configuration Confusion*<br/><small>65 configuration settings: pointless, duplicated, or incompatible at the same time</small></bullet>
|
||||
<bullet>*Unproductive Usability*<br/><small>port 9000, missing breakpoints, education (networking)</small></bullet>
|
||||
<bullet>*Poor Performance*</bullet>
|
||||
<bullet>*Lagging Behind*<br/><small>PHP 7.3 has been out for 3 months</small></bullet>
|
||||
<bullet>*Lagging Behind*<br/><small>Xdebug for PHP 7.3 was 4 months late</small></bullet>
|
||||
</list>
|
||||
</slide>
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
<title>The Xdebug Experience: Solutions</title>
|
||||
|
||||
<list>
|
||||
<bullet>The *Big Refactor* project</bullet>
|
||||
<bullet>Setting up CI (with PHP 7.4/8.0 nightlies)</bullet>
|
||||
<bullet>The *Big Refactor* project</bullet>
|
||||
<bullet>Education<br/><small>Networking, settings, how Xdebug interacts</small></bullet>
|
||||
<bullet>Performance analysis and improvements for specific features</bullet>
|
||||
</list>
|
||||
<break/>
|
||||
<blurb>In order to get this all done, I would need sponsoring</blurb>
|
||||
<blurb>In order to get this all done, I would need sponsorship</blurb>
|
||||
</slide>
|
||||
|
||||
@@ -3,8 +3,9 @@
|
||||
|
||||
<blurb>*Xdebug ~2.8~*</blurb>
|
||||
<list>
|
||||
<bullet>Set up a local CI</bullet>
|
||||
<bullet>Improve 'breakpoint' behaviour</bullet>
|
||||
<bullet>Improve 'breakpoint' behaviour  ✔</bullet>
|
||||
<bullet>Initial PHP 7.4 support  (✔)</bullet>
|
||||
<bullet>Set up a local CI  (✔)</bullet>
|
||||
</list>
|
||||
<break/>
|
||||
<blurb>*Xdebug ~3~*</blurb>
|
||||
@@ -16,6 +17,5 @@
|
||||
</list>
|
||||
</bullet>
|
||||
<bullet>Performance Improvements</bullet>
|
||||
<bullet>Async debugging</bullet>
|
||||
</list>
|
||||
</slide>
|
||||
|
||||
29
slides/xdebug/modes.xml
Normal file
29
slides/xdebug/modes.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<slide>
|
||||
<title>Introducing Modes</title>
|
||||
|
||||
<break lines="5"/>
|
||||
<div effect="fade-in-out">
|
||||
<blurb class="big-centre">Debug</blurb>
|
||||
<blurb class="center">Every day debugging aide</blurb>
|
||||
</div>
|
||||
<div effect="fade-in-out">
|
||||
<blurb class="big-centre">Step Debugger</blurb>
|
||||
<blurb class="center">Debugging applications with an IDE<br/><small>Previously: remote debugger</small></blurb>
|
||||
</div>
|
||||
<div effect="fade-in-out">
|
||||
<blurb class="big-centre">Tracer</blurb>
|
||||
<blurb class="center">Tracing the execution of a script to a file</blurb>
|
||||
</div>
|
||||
<div effect="fade-in-out">
|
||||
<blurb class="big-centre">Profiler</blurb>
|
||||
<blurb class="center">Profiling application performance</blurb>
|
||||
</div>
|
||||
<div effect="fade-in-out">
|
||||
<blurb class="big-centre">Code Coverage</blurb>
|
||||
<blurb class="center">Which code is run during tests</blurb>
|
||||
</div>
|
||||
<div effect="fade-in-out">
|
||||
<blurb class="big-centre">Time Traveller</blurb>
|
||||
<blurb class="big-centre"> 🧙</blurb>
|
||||
</div>
|
||||
</slide>
|
||||
32
slides/xdebug/php-7.4-compile-error.xml
Normal file
32
slides/xdebug/php-7.4-compile-error.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<slide>
|
||||
<title>PHP 7.4 compile errors</title>
|
||||
|
||||
<blurb>Changes with regards to new/removed OP codes: ✔</blurb>
|
||||
<example>
|
||||
<![CDATA[+#if PHP_VERSION_ID < 70400
|
||||
XDEBUG_SET_OPCODE_OVERRIDE_COMMON(ZEND_ADD_TRAIT);
|
||||
XDEBUG_SET_OPCODE_OVERRIDE_COMMON(ZEND_BIND_TRAITS);
|
||||
+#endif]]>
|
||||
</example>
|
||||
<example>
|
||||
<![CDATA[+#if PHP_VERSION_ID < 70400
|
||||
&& opcode.opcode != ZEND_VERIFY_ABSTRACT_CLASS
|
||||
- && opcode.opcode != ZEND_OP_DATA
|
||||
&& opcode.opcode != ZEND_ADD_INTERFACE
|
||||
+#endif
|
||||
+ && opcode.opcode != ZEND_OP_DATA]]>
|
||||
</example>
|
||||
|
||||
<blurb>Changes to fetching debugging information: ✘</blurb>
|
||||
<example><![CDATA[…/xdebug_var.c:267:16: error: implicit declaration of function ‘Z_OBJDEBUG_P’; did you mean ‘Z_OBJCE_P’?
|
||||
*properties = Z_OBJDEBUG_P(parent, *is_temp);
|
||||
^~~~~~~~~~~~
|
||||
Z_OBJCE_P]]></example>
|
||||
|
||||
<blurb>Changes to how static members are stored internally: ✘</blurb>
|
||||
<example><![CDATA[…/xdebug_var.c:319:112: error: ‘zend_class_entry’ has no member named ‘static_members_table’; did you mean ‘static_members_table__ptr’?
|
||||
if (cce && cce->static_members_table) {
|
||||
^~~~~~~~~~~~~~~~~~~~
|
||||
static_members_table__ptr]]></example>
|
||||
|
||||
</slide>
|
||||
BIN
slides/xdebug/phpinternalsnews.png
Normal file
BIN
slides/xdebug/phpinternalsnews.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
8
slides/xdebug/phpinternalsnews.xml
Normal file
8
slides/xdebug/phpinternalsnews.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<slide>
|
||||
<image filename="phpinternalsnews.png"/>
|
||||
<break/>
|
||||
<image filename="phpintnews-episodes.png"/>
|
||||
|
||||
<break lines="2"/>
|
||||
<blurb align="center">%https://phpinternals.news%</blurb>
|
||||
</slide>
|
||||
BIN
slides/xdebug/phpintnews-episodes.png
Normal file
BIN
slides/xdebug/phpintnews-episodes.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 35 KiB |
BIN
slides/xdebug/port9000.png
Normal file
BIN
slides/xdebug/port9000.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 132 KiB |
9
slides/xdebug/port9000.xml
Normal file
9
slides/xdebug/port9000.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<slide>
|
||||
<title>Copy-cats</title>
|
||||
|
||||
<image filename="port9000.png"/>
|
||||
<div effect="fade-in">
|
||||
<break lines="3"/>
|
||||
<blurb class="centre">PHP-FPM picked the same port as Xdebug (DBGp) ☹</blurb>
|
||||
</div>
|
||||
</slide>
|
||||
@@ -3,6 +3,9 @@
|
||||
<title>Resources</title>
|
||||
|
||||
<qrcode>http://derickrethans.nl/talks/:-:talk_id:-:</qrcode>
|
||||
<blurb>Slides:<br/>:-:joindin:-:</blurb>
|
||||
<blurb>:-:speaker:-: — @:-:twitter:-: — :-:email:-:</blurb>
|
||||
<break line="2"/>
|
||||
<blurb class="center">*Slides*</blurb>
|
||||
<blurb class="center">%:-:joindin:-:%</blurb>
|
||||
<break line="2"/>
|
||||
<blurb class="center">:-:speaker:-: — @:-:twitter:-: — :-:email:-:</blurb>
|
||||
</slide>
|
||||
|
||||
38
slides/xdebug/test-with-many-versions.xml
Normal file
38
slides/xdebug/test-with-many-versions.xml
Normal file
@@ -0,0 +1,38 @@
|
||||
<slide>
|
||||
<title>Various Versions</title>
|
||||
|
||||
<example inline="2">
|
||||
|cccccc|5.3.29| 7.1.16 7.1.25-zts 7.1.9 7.2.17 7.2dev-32bit
|
||||
|cccccc|5.3.29-zts| 7.1.16-32bit 7.1.26 7.1.9-32bit 7.2.17-32bit 7.2dev-zts
|
||||
|cccccc|5.4.44| 7.1.16-zts 7.1.26-32bit 7.1.9-zts 7.2.17-zts 7.3.0
|
||||
|cccccc|5.4.45| 7.1.17 7.1.26-zts 7.1dev 7.2.18 7.3.0-32bit
|
||||
|cccccc|5.4.45-zts| 7.1.17-32bit 7.1.27 7.1dev-32bit 7.2.18-32bit 7.3.0-zts
|
||||
|cccccc|5.6.40| 7.1.17-zts 7.1.27-32bit 7.1dev-zts 7.2.18-zts 7.3.1
|
||||
|cccccc|5.6.40-zts| 7.1.18 7.1.27-zts 7.2.0 7.2.1-zts 7.3.1-32bit
|
||||
|999999|7.0dev| 7.1.18-32bit 7.1.28 7.2.0-32bit 7.2.2 7.3.1-zts
|
||||
|999999|7.0dev-zts| 7.1.18-zts 7.1.28-32bit 7.2.0-zts 7.2.2-32bit 7.3.2
|
||||
7.1.0 7.1.19 7.1.28-zts 7.2.1 7.2.2-zts 7.3.2-32bit
|
||||
7.1.0-32bit 7.1.19-32bit 7.1.29 7.2.10 7.2.3 7.3.2-zts
|
||||
7.1.0-zts 7.1.19-zts 7.1.29-32bit 7.2.10-32bit 7.2.3-32bit 7.3.3
|
||||
7.1.1 7.1.1-zts 7.1.29-zts 7.2.10-zts 7.2.3-zts 7.3.3-32bit
|
||||
7.1.10 7.1.2 7.1.2-zts 7.2.11 7.2.4 7.3.3-zts
|
||||
7.1.10-32bit 7.1.20 7.1.3 7.2.11-32bit 7.2.4-32bit 7.3.4
|
||||
7.1.10-zts 7.1.20-32bit 7.1.3-32bit 7.2.11-zts 7.2.4-zts 7.3.4-32bit
|
||||
7.1.11 7.1.20-zts 7.1.3-zts 7.2.12 7.2.5 7.3.4-zts
|
||||
7.1.11-32bit 7.1.21 7.1.4 7.2.12-32bit 7.2.5-32bit 7.3.5
|
||||
7.1.11-zts 7.1.21-32bit 7.1.4-32bit 7.2.12-zts 7.2.5-zts 7.3.5-32bit
|
||||
7.1.12 7.1.21-zts 7.1.4-zts 7.2.13 7.2.6 7.3.5-zts
|
||||
7.1.12-32bit 7.1.22 7.1.5 7.2.1-32bit 7.2.6-32bit 7.3dev
|
||||
7.1.12-zts 7.1.22-32bit 7.1.5-32bit 7.2.13-32bit 7.2.6-zts 7.3dev-32bit
|
||||
7.1.13 7.1.22-zts 7.1.5-zts 7.2.13-zts 7.2.7 7.3dev-zts
|
||||
7.1.1-32bit 7.1.23 7.1.6 7.2.14 7.2.7-32bit 7.4dev
|
||||
7.1.13-32bit 7.1.2-32bit 7.1.6-32bit 7.2.14-32bit 7.2.7-zts 7.4dev-32bit
|
||||
7.1.13-zts 7.1.23-32bit 7.1.6-zts 7.2.14-zts 7.2.8 7.4dev-zts
|
||||
7.1.14 7.1.23-zts 7.1.7 7.2.15 7.2.8-32bit master
|
||||
7.1.14-32bit 7.1.24 7.1.7-32bit 7.2.15-32bit 7.2.8-zts master-32bit
|
||||
7.1.14-zts 7.1.24-32bit 7.1.7-zts 7.2.15-zts 7.2.9 master-zts
|
||||
7.1.15 7.1.24-zts 7.1.8 7.2.16 7.2.9-32bit
|
||||
7.1.15-32bit 7.1.25 7.1.8-32bit 7.2.16-32bit 7.2.9-zts
|
||||
7.1.15-zts 7.1.25-32bit 7.1.8-zts 7.2.16-zts 7.2dev
|
||||
</example>
|
||||
</slide>
|
||||
@@ -1,7 +1,10 @@
|
||||
<slide type="title">
|
||||
<title>Welcome!</title>
|
||||
<image align="center" filename="xdebug-logo.png" pdf-scale="0.8"/>
|
||||
<blurb class="event-date">:-:event:-: - :-:location:-: - :-:date:-:</blurb>
|
||||
<blurb class="event-presenter">Derick Rethans - :-:email:-: - twitter: @:-:twitter:-:</blurb>
|
||||
<blurb class="pres-url-small">:-:joindin:-:</blurb>
|
||||
<break lines="2"/>
|
||||
<blurb class="event-title">:-:title:-:</blurb>
|
||||
<blurb>~:-:event:-:~</blurb>
|
||||
<break lines="1"/>
|
||||
<blurb align="right" class="event-presenter">:-:speaker:-:</blurb>
|
||||
<blurb align="right" class="pres-url-small">:-:email:-:—@:-:twitter:-:</blurb>
|
||||
<blurb align="right" class="pres-url-small">:-:url:-:</blurb>
|
||||
<blurb align="right" class="pres-url-small">:-:joindin:-:</blurb>
|
||||
</slide>
|
||||
|
||||
4
slides/xdebug/xdebug-2.8.xml
Normal file
4
slides/xdebug/xdebug-2.8.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<slide class="title">
|
||||
<break lines="8"/>
|
||||
<blurb class="big-centre">Xdebug 2.8</blurb>
|
||||
</slide>
|
||||
4
slides/xdebug/xdebug-3.xml
Normal file
4
slides/xdebug/xdebug-3.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<slide class="title">
|
||||
<break lines="8"/>
|
||||
<blurb class="big-centre">Xdebug 3</blurb>
|
||||
</slide>
|
||||
12
slides/xdebug/xdebug-ci.xml
Normal file
12
slides/xdebug/xdebug-ci.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<slide>
|
||||
<title>Local Continuous Integration</title>
|
||||
|
||||
<list>
|
||||
<bullet>Any cloud based CI is too slow due to lack of parallelisation<br/><small>Travis CI, Circle CI, AppVeyor</small></bullet>
|
||||
<bullet>Many configuration pivots:<br/><small>NTS/ZTS, 64-bit/32-bit, OPcache on/off</small></bullet>
|
||||
<bullet>Changes between PHP patch versions<br/><small>Line changes for OPcodes, bug fixes in PHP</small></bullet>
|
||||
<bullet>I have a local machine with plenty of cores and memory</bullet>
|
||||
<bullet>Visualisation</bullet>
|
||||
<bullet>Nightly builds of PHP 7.4 and 8.0</bullet>
|
||||
</list>
|
||||
</slide>
|
||||
BIN
slides/xdebug/xdebug-slow.png
Normal file
BIN
slides/xdebug/xdebug-slow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 135 KiB |
5
slides/xdebug/xdebug-slow.xml
Normal file
5
slides/xdebug/xdebug-slow.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<slide>
|
||||
<title>Performance Woes</title>
|
||||
|
||||
<image filename="xdebug-slow.png"/>
|
||||
</slide>
|
||||
57
xdebug-phpday19.xml
Normal file
57
xdebug-phpday19.xml
Normal file
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<presentation css="derick.css">
|
||||
<topic>Debugging</topic>
|
||||
<title>Xdebug 3.0</title>
|
||||
<event>phpDay 2019</event>
|
||||
<location>Verona, Italy</location>
|
||||
<date>May 11th, 2019</date>
|
||||
<speaker>Derick Rethans</speaker>
|
||||
<email>derick@xdebug.org</email>
|
||||
<twitter>derickr</twitter>
|
||||
<url>https://derickrethans.nl/talks.html</url>
|
||||
<joindin>https://joind.in/26193</joindin>
|
||||
<slide>slides/xdebug/title.xml</slide>
|
||||
|
||||
<slide>slides/xdebug/focus-on-xdebug.xml</slide>
|
||||
The Xdebug Experience
|
||||
17 years
|
||||
|
||||
<slide>slides/xdebug/config-settings-2.xml</slide>
|
||||
<slide>slides/xdebug/breakpoints-2.xml</slide>
|
||||
<slide>slides/xdebug/port9000.xml</slide>
|
||||
<slide>slides/xdebug/connect1.xml</slide>
|
||||
<slide>slides/xdebug/connect2.xml</slide>
|
||||
<slide>slides/xdebug/debugger-activation.xml</slide>
|
||||
<slide>slides/xdebug/debugger-connection-log.xml</slide>
|
||||
<slide>slides/xdebug/xdebug-slow.xml</slide>
|
||||
<slide>slides/xdebug/test-with-many-versions.xml</slide>
|
||||
|
||||
<slide>slides/xdebug/focus-on-xdebug2.xml</slide>
|
||||
|
||||
<slide>slides/xdebug/focus-on-xdebug3.xml</slide>
|
||||
breakpoint behaviour
|
||||
New versions (7.4)
|
||||
CI
|
||||
|
||||
<slide>slides/xdebug/xdebug-2.8.xml</slide>
|
||||
<slide>slides/xdebug/breakpoint-behaviour.xml</slide>
|
||||
<slide>slides/xdebug/php-7.4-compile-error.xml</slide>
|
||||
<slide>slides/xdebug/xdebug-ci.xml</slide>
|
||||
|
||||
<slide>slides/xdebug/xdebug-3.xml</slide>
|
||||
Code reorganisation
|
||||
Modes
|
||||
- only do what is needed
|
||||
Reduce Configuration Options
|
||||
Code Improvements (algorithms, memory, etc)
|
||||
<slide>slides/xdebug/code-reorgnisation.xml</slide>
|
||||
<slide>slides/xdebug/modes.xml</slide>
|
||||
<slide>slides/xdebug/config-settings-3.xml</slide>
|
||||
<slide>slides/xdebug/config-settings-3b.xml</slide>
|
||||
<slide>slides/xdebug/xdebug-slow.xml</slide>
|
||||
|
||||
<slide>slides/xdebug/donate.xml</slide>
|
||||
<slide>slides/xdebug/phpinternalsnews.xml</slide>
|
||||
<slide>slides/xdebug/resources.xml</slide>
|
||||
|
||||
</presentation>
|
||||
Reference in New Issue
Block a user