Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Stop using var_dump(); Embrace step debugging
Search
BoldMinded
October 09, 2017
Programming
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Stop using var_dump(); Embrace step debugging
EE CONF 2017 Presentation
BoldMinded
October 09, 2017
More Decks by BoldMinded
See All by BoldMinded
A/B Testing
boldminded
0
170
Using Behat to test ExpressionEngine add-ons
boldminded
0
35
The Anatomy of a 5000 hour project
boldminded
4
870
Other Decks in Programming
See All in Programming
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
170
AmebaブログはKMPから卒業します
kmars0605
0
340
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
170
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.5k
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.8k
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
6
4.6k
SODA - FACT BOOK(JP)
sodainc
1
40k
私なりのハーネスエンジニアリング ~独自の言語処理系の開発を通して~
seosoft
0
200
Engineering Biometric UX Across Android Versions | DroidKnights 2026
ryunen344
1
190
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
220
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.2k
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
170
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
820
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
300
First, design no harm
axbom
PRO
2
1.4k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
380
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Deep Space Network (abreviated)
tonyrice
0
410
A designer walks into a library…
pauljervisheath
211
25k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
980
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