phpDay Xdebug talk

This commit is contained in:
Derick Rethans
2019-05-10 12:05:05 +02:00
parent bf6b7fd0f8
commit 09f6115033
26 changed files with 640 additions and 16 deletions

View File

@@ -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>

View 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, &amp;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>

View File

@@ -0,0 +1,49 @@
<slide>
<title>Missed Breakpoints</title>
<table class="two">
<tr><td>
<example inline="2"><![CDATA[
|aaaaaa| 1| &lt;?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>

View 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>

View 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>

View 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>

View 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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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 &#160;</bullet>
<bullet>Initial PHP 7.4 support &#160;(✔)</bullet>
<bullet>Set up a local CI &#160;(✔)</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
View 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>

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
slides/xdebug/port9000.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

View 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>

View File

@@ -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>

View 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>

View File

@@ -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>

View File

@@ -0,0 +1,4 @@
<slide class="title">
<break lines="8"/>
<blurb class="big-centre">Xdebug 2.8</blurb>
</slide>

View File

@@ -0,0 +1,4 @@
<slide class="title">
<break lines="8"/>
<blurb class="big-centre">Xdebug 3</blurb>
</slide>

View 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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

View File

@@ -0,0 +1,5 @@
<slide>
<title>Performance Woes</title>
<image filename="xdebug-slow.png"/>
</slide>

57
xdebug-phpday19.xml Normal file
View 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>