Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Stop using var_dump(); Embrace step debugging
Search
BoldMinded
October 09, 2017
Programming
0
240
Stop using var_dump(); Embrace step debugging
EE CONF 2017 Presentation
BoldMinded
October 09, 2017
Tweet
Share
More Decks by BoldMinded
See All by BoldMinded
A/B Testing
boldminded
0
150
Using Behat to test ExpressionEngine add-ons
boldminded
0
30
The Anatomy of a 5000 hour project
boldminded
4
820
Other Decks in Programming
See All in Programming
AWS発のAIエディタKiroを使ってみた
iriikeita
1
190
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.3k
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
890
AIコーディングAgentとの向き合い方
eycjur
0
270
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
1.7k
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
130
Oracle Database Technology Night 92 Database Connection control FAN-AC
oracle4engineer
PRO
1
450
アセットのコンパイルについて
ojun9
0
130
プロポーザル駆動学習 / Proposal-Driven Learning
mackey0225
2
1.3k
より安全で効率的な Go コードへ: Protocol Buffers Opaque API の導入
shwatanap
1
110
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
280
Kiroで始めるAI-DLC
kaonash
2
600
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
113
20k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Bash Introduction
62gerente
615
210k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Building Adaptive Systems
keathley
43
2.7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Optimizing for Happiness
mojombo
379
70k
Code Reviewing Like a Champion
maltzj
525
40k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Transcript
1
Stop using var_dump(); embrace step debugging 2
Step debugging is stopping code execution on a specific line
of code, then advancing the application 1 line of code at a time. 3
{exp:channel:entries channel="foo" var_dump="yes" } {entry_id} {/exp:channel:entries} 4
{exp:channel:entries channel="foo"} ={title}={entry_id}={some_custom_field}= {/exp:channel:entries} 5
{exp:channel:entries channel="foo"} <pre>{entry_id}</pre> {/exp:channel:entries} 6
var_dump(); 7
var_dump($entry); die; object(BoldMinded\Publisher\Service\Entry\Entry) private 'request' => object(BoldMinded\Publisher\Service\Request) private 'siteId' =>
int 1 private 'entryId' => null private 'defaultLanguage' => object(BoldMinded\Publisher\Model\Language) protected 'id' => int 1 protected 'short_name' => string 'en' (length=2) protected 'short_name_segment' => string 'en' (length=2) protected 'long_name' => string 'English' (length=7) protected 'locale' => string 'en_EN' (length=5) protected 'language_pack' => string 'english' (length=7) protected 'cat_url_indicator' => string 'category' (length=8) protected 'is_default' => string 'y' (length=1) protected 'is_enabled' => string 'y' (length=1) protected 'direction' => string 'ltr' (length=3) protected 'sites' => string '[1]' (length=3) protected '_name' => string 'publisher:Language' (length=18) 8
Pros — Easy — No special tools necessary — Works
anywhere 9
Cons — Slow — Lacks context 10
Alternative function writeToFile($fileName, $data) { $file = PATH_CACHE.$fileName.'.txt'; $stream =
fopen($file, 'a+'); fwrite($stream, print_r($data, TRUE) ."\n"); fclose($stream); } 11
Xdebug is a PHP extension which provides debugging and profiling
capabilities. 12
13
14
Installing and Configuring apt-get install php-xdebug vim /etc/php/apache2/php.ini zend_extension=xdebug.so xdebug.remote_connect_back=1
xdebug.remote_autostart=0 xdebug.remote_enable=1 xdebug.show_exception_trace=1 15
16
Tools — PhpStorm — SublimeText w/ plugin ¯\_(ϑ)_/¯ — Microsoft
Code w/ plugin 17
Navigating — Setting breakpoints 18
Navigating — Conditional breakpoints 19
Navigating — Stepping over 20
Navigating — Stepping into 21
22
23
24
25
Tools — https://www.jetbrains.com/phpstorm/marklets/ — Xdebug Helper in Chrome Store —
?XDEBUG_SESSION_START=PHPSTORM 26
27
28
Demo <blink>Click Here!</blink> 29
Useful breakpoint locations in EE — system/ee/legacy/libraries/Core.php function generate_page() —
system/ee/EllisLab/Addons/channel/mod.channel.php function entries() — system/ee/legacy/libraries/Template.php function run_template_engine() 30
Personal favorites — Call stack while debugging — Easier to
debug loops — Can see EE template code at different parse states 31
32
Remote step debugging zend_extension=xdebug.so xdebug.remote_connect_back=0 xdebug.remote_autostart=0 xdebug.remote_enable=1 33
34
35
36
Demo 37
Hark, there be dragons. 38
Truth You will inevitably lose productivity getting step debug working.
39
But You will gain that time back 10 fold when
you're debugging. I promise. 40
Tips Using repeatable scripts to configure environments will make things
easier. — Ansible — PuPHPet — Docker 41
42
Questions? 43
Thank You! — @litzinger — @boldminded — boldminded.com 44