com presentations: phpDay Xdebug talk: deepdive-phpday19.xml slides/xdebug/breakpoint-behaviour.xml slides/xdebug/breakpoints-2.xml slides/xdebug/code-reorgnisation.xml slides/xdebug/config-settings-2.xml slides/xdebug/config-settings-3.xml slides/xdebug/config-settings-3b.xml slides/xdebug/focus-on-xdebug.xml slides/xdebug/focus-on-xdebug2.xml slides/xdebug/focus-on-xdebug3.xml slides/xdebug/modes.xml slides/xdebug/php-7.4-compile-error.xml slid
[email protected] (Derick Rethans) Fri, 10 May 2019 10:05:05 +0000
| Newsgroups | php.pres |
|---|---|
| Message-ID | <[email protected]> |
Commit: 09f611503377a852bf3fa5f1ff780fc6b855f560 Author: Derick Rethans <[email protected]> Fri, 10 May 2019 12:05:05 +0200 Parents: bf6b7fd0f8d8d02c59fa24ef82c585e29545cefa Branches: master Link: http://git.php.net/?p=presentations.git;a=commitdiff;h=09f611503377a852bf3fa5f1ff780fc6b855f560 Log: phpDay Xdebug talk Changed paths: M deepdive-phpday19.xml A slides/xdebug/breakpoint-behaviour.xml A slides/xdebug/breakpoints-2.xml A slides/xdebug/code-reorgnisation.xml A slides/xdebug/config-settings-2.xml A slides/xdebug/config-settings-3.xml A slides/xdebug/config-settings-3b.xml M slides/xdebug/focus-on-xdebug.xml M slides/xdebug/focus-on-xdebug2.xml M slides/xdebug/focus-on-xdebug3.xml A slides/xdebug/modes.xml A slides/xdebug/php-7.4-compile-error.xml A slides/xdebug/phpinternalsnews.png A slides/xdebug/phpinternalsnews.xml A slides/xdebug/phpintnews-episodes.png A slides/xdebug/port9000.png A slides/xdebug/port9000.xml M slides/xdebug/resources.xml A slides/xdebug/test-with-many-versions.xml M slides/xdebug/title.xml A slides/xdebug/xdebug-2.8.xml A slides/xdebug/xdebug-3.xml A slides/xdebug/xdebug-ci.xml A slides/xdebug/xdebug-slow.png A slides/xdebug/xdebug-slow.xml A xdebug-phpday19.xml
diff_09f611503377a852bf3fa5f1ff780fc6b855f560.txt
(text/plain, 29.9 KB)
diff --git a/deepdive-phpday19.xml b/deepdive-phpday19.xml index 4702d21..fc3ea33 100644 --- a/deepdive-phpday19.xml +++ b/deepdive-phpday19.xml @@ -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>[email protected]</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> diff --git a/slides/xdebug/breakpoint-behaviour.xml b/slides/xdebug/breakpoint-behaviour.xml new file mode 100644 index 0000000..0b0b7e4 --- /dev/null +++ b/slides/xdebug/breakpoint-behaviour.xml @@ -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> diff --git a/slides/xdebug/breakpoints-2.xml b/slides/xdebug/breakpoints-2.xml new file mode 100644 index 0000000..04c932d --- /dev/null +++ b/slides/xdebug/breakpoints-2.xml @@ -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> diff --git a/slides/xdebug/code-reorgnisation.xml b/slides/xdebug/code-reorgnisation.xml new file mode 100644 index 0000000..82a1865 --- /dev/null +++ b/slides/xdebug/code-reorgnisation.xml @@ -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> diff --git a/slides/xdebug/config-settings-2.xml b/slides/xdebug/config-settings-2.xml new file mode 100644 index 0000000..2c3b731 --- /dev/null +++ b/slides/xdebug/config-settings-2.xml @@ -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> diff --git a/slides/xdebug/config-settings-3.xml b/slides/xdebug/config-settings-3.xml new file mode 100644 index 0000000..93cd723 --- /dev/null +++ b/slides/xdebug/config-settings-3.xml @@ -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> diff --git a/slides/xdebug/config-settings-3b.xml b/slides/xdebug/config-settings-3b.xml new file mode 100644 index 0000000..6879155 --- /dev/null +++ b/slides/xdebug/config-settings-3b.xml @@ -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> diff --git a/slides/xdebug/focus-on-xdebug.xml b/slides/xdebug/focus-on-xdebug.xml index b62e62b..3828117 100644 --- a/slides/xdebug/focus-on-xdebug.xml +++ b/slides/xdebug/focus-on-xdebug.xml @@ -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> diff --git a/slides/xdebug/focus-on-xdebug2.xml b/slides/xdebug/focus-on-xdebug2.xml index 0e9a5dd..92c4f55 100644 --- a/slides/xdebug/focus-on-xdebug2.xml +++ b/slides/xdebug/focus-on-xdebug2.xml @@ -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> diff --git a/slides/xdebug/focus-on-xdebug3.xml b/slides/xdebug/focus-on-xdebug3.xml index 688b93f..4e13b56 100644 --- a/slides/xdebug/focus-on-xdebug3.xml +++ b/slides/xdebug/focus-on-xdebug3.xml @@ -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> diff --git a/slides/xdebug/modes.xml b/slides/xdebug/modes.xml new file mode 100644 index 0000000..e6b66e6 --- /dev/null +++ b/slides/xdebug/modes.xml @@ -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> diff --git a/slides/xdebug/php-7.4-compile-error.xml b/slides/xdebug/php-7.4-compile-error.xml new file mode 100644 index 0000000..3182cef --- /dev/null +++ b/slides/xdebug/php-7.4-compile-error.xml @@ -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> diff --git a/slides/xdebug/phpinternalsnews.png b/slides/xdebug/phpinternalsnews.png new file mode 100644 index 0000000..2bfce81 Binary files /dev/null and b/slides/xdebug/phpinternalsnews.png differ diff --git a/slides/xdebug/phpinternalsnews.xml b/slides/xdebug/phpinternalsnews.xml new file mode 100644 index 0000000..e6a9791 --- /dev/null +++ b/slides/xdebug/phpinternalsnews.xml @@ -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> diff --git a/slides/xdebug/phpintnews-episodes.png b/slides/xdebug/phpintnews-episodes.png new file mode 100644 index 0000000..321316b Binary files /dev/null and b/slides/xdebug/phpintnews-episodes.png differ diff --git a/slides/xdebug/port9000.png b/slides/xdebug/port9000.png new file mode 100644 index 0000000..3e65f2c Binary files /dev/null and b/slides/xdebug/port9000.png differ diff --git a/slides/xdebug/port9000.xml b/slides/xdebug/port9000.xml new file mode 100644 index 0000000..a385df0 --- /dev/null +++ b/slides/xdebug/port9000.xml @@ -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> diff --git a/slides/xdebug/resources.xml b/slides/xdebug/resources.xml index d1e4f1b..f0f654f 100644 --- a/slides/xdebug/resources.xml +++ b/slides/xdebug/resources.xml @@ -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> diff --git a/slides/xdebug/test-with-many-versions.xml b/slides/xdebug/test-with-many-versions.xml new file mode 100644 index 0000000..f3657c3 --- /dev/null +++ b/slides/xdebug/test-with-many-versions.xml @@ -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> diff --git a/slides/xdebug/title.xml b/slides/xdebug/title.xml index 4d8f9be..f32a37c 100644 --- a/slides/xdebug/title.xml +++ b/slides/xdebug/title.xml @@ -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> diff --git a/slides/xdebug/xdebug-2.8.xml b/slides/xdebug/xdebug-2.8.xml new file mode 100644 index 0000000..e564243 --- /dev/null +++ b/slides/xdebug/xdebug-2.8.xml @@ -0,0 +1,4 @@ +<slide class="title"> +<break lines="8"/> +<blurb class="big-centre">Xdebug 2.8</blurb> +</slide> diff --git a/slides/xdebug/xdebug-3.xml b/slides/xdebug/xdebug-3.xml new file mode 100644 index 0000000..c25fc4c --- /dev/null +++ b/slides/xdebug/xdebug-3.xml @@ -0,0 +1,4 @@ +<slide class="title"> +<break lines="8"/> +<blurb class="big-centre">Xdebug 3</blurb> +</slide> diff --git a/slides/xdebug/xdebug-ci.xml b/slides/xdebug/xdebug-ci.xml new file mode 100644 index 0000000..093bc00 --- /dev/null +++ b/slides/xdebug/xdebug-ci.xml @@ -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> diff --git a/slides/xdebug/xdebug-slow.png b/slides/xdebug/xdebug-slow.png new file mode 100644 index 0000000..5c2f7b9 Binary files /dev/null and b/slides/xdebug/xdebug-slow.png differ diff --git a/slides/xdebug/xdebug-slow.xml b/slides/xdebug/xdebug-slow.xml new file mode 100644 index 0000000..1ec8fc5 --- /dev/null +++ b/slides/xdebug/xdebug-slow.xml @@ -0,0 +1,5 @@ +<slide> +<title>Performance Woes</title> + +<image filename="xdebug-slow.png"/> +</slide> diff --git a/xdebug-phpday19.xml b/xdebug-phpday19.xml new file mode 100644 index 0000000..c0ea8e6 --- /dev/null +++ b/xdebug-phpday19.xml @@ -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>[email protected]</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>