Soumettre la recherche
Mettre en ligne
A toolbelt of seasoned bug hunter - Damir Zekic
•
0 j'aime
•
230 vues
Ruby Meditation
Suivre
Video: https://youtu.be/So9ft63WVLY Ruby Meditation #19 November 25, 2017 Kyiv
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 52
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
An Introduction to PHP Dependency Management With Composer
An Introduction to PHP Dependency Management With Composer
Oomph, Inc.
Introduction to ansible
Introduction to ansible
Javier Arturo Rodríguez
How about Gradle?
How about Gradle?
Yasuharu Nakano
Python Workshop by Tom Frantz
Python Workshop by Tom Frantz
Prottay Karim
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
PROIDEA
10 reasons to love CoffeeScript
10 reasons to love CoffeeScript
Lukas Alexandre
Go Replicator
Go Replicator
Joshua Drake
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
Puppet
Recommandé
An Introduction to PHP Dependency Management With Composer
An Introduction to PHP Dependency Management With Composer
Oomph, Inc.
Introduction to ansible
Introduction to ansible
Javier Arturo Rodríguez
How about Gradle?
How about Gradle?
Yasuharu Nakano
Python Workshop by Tom Frantz
Python Workshop by Tom Frantz
Prottay Karim
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
DOD 2016 - Tomasz Torcz - The Song of JBoss and Chef
PROIDEA
10 reasons to love CoffeeScript
10 reasons to love CoffeeScript
Lukas Alexandre
Go Replicator
Go Replicator
Joshua Drake
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
The Puppet Debugging Kit: Building Blocks for Exploration and Problem Solving...
Puppet
Fizz and buzz of computer programs in python.
Fizz and buzz of computer programs in python.
Esehara Shigeo
Clojure入門
Clojure入門
Naoyuki Kakuda
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
Ozh
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Steve Rhoades
Introduction to Nim
Introduction to Nim
Fred Heath
t3chfest 2015 - Zoe in 30 minutes
t3chfest 2015 - Zoe in 30 minutes
David Muñoz Díaz
Troubleshooting Puppet
Troubleshooting Puppet
Thomas Howard Uphill
He 74 a-thltht-lãxuântâm-11tlt
He 74 a-thltht-lãxuântâm-11tlt
laonap166
Vidoop CouchDB Talk
Vidoop CouchDB Talk
Chris Anderson
Hotspot tools
Hotspot tools
SEA Tecnologia
#safaDojo - Coding Dojo Go lang
#safaDojo - Coding Dojo Go lang
Marcelo Andrade
Rabia
Rabia
university of Gujrat, pakistan
Top 28 programming language with hello world for artificial intelligence
Top 28 programming language with hello world for artificial intelligence
AL- AMIN
Sayoo odoo open_erp
Sayoo odoo open_erp
AmineArrahmane Achargui
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Puppet
Naughty And Nice Bash Features
Naughty And Nice Bash Features
Nati Cohen
Your Library Sucks, and why you should use it.
Your Library Sucks, and why you should use it.
Peter Higgins
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
Puppet
x86 & PE
x86 & PE
Ange Albertini
Bugs from Outer Space | while42 SF #6
Bugs from Outer Space | while42 SF #6
While42
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Ange Albertini
Hacking OOo 2.0
Hacking OOo 2.0
Alexandro Colorado
Contenu connexe
Tendances
Fizz and buzz of computer programs in python.
Fizz and buzz of computer programs in python.
Esehara Shigeo
Clojure入門
Clojure入門
Naoyuki Kakuda
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
Ozh
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Steve Rhoades
Introduction to Nim
Introduction to Nim
Fred Heath
t3chfest 2015 - Zoe in 30 minutes
t3chfest 2015 - Zoe in 30 minutes
David Muñoz Díaz
Troubleshooting Puppet
Troubleshooting Puppet
Thomas Howard Uphill
He 74 a-thltht-lãxuântâm-11tlt
He 74 a-thltht-lãxuântâm-11tlt
laonap166
Vidoop CouchDB Talk
Vidoop CouchDB Talk
Chris Anderson
Hotspot tools
Hotspot tools
SEA Tecnologia
#safaDojo - Coding Dojo Go lang
#safaDojo - Coding Dojo Go lang
Marcelo Andrade
Rabia
Rabia
university of Gujrat, pakistan
Top 28 programming language with hello world for artificial intelligence
Top 28 programming language with hello world for artificial intelligence
AL- AMIN
Sayoo odoo open_erp
Sayoo odoo open_erp
AmineArrahmane Achargui
Tendances
(14)
Fizz and buzz of computer programs in python.
Fizz and buzz of computer programs in python.
Clojure入門
Clojure入門
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
WordPress Plugin Unit Tests (FR - WordCamp Paris 2015)
Asynchronous PHP and Real-time Messaging
Asynchronous PHP and Real-time Messaging
Introduction to Nim
Introduction to Nim
t3chfest 2015 - Zoe in 30 minutes
t3chfest 2015 - Zoe in 30 minutes
Troubleshooting Puppet
Troubleshooting Puppet
He 74 a-thltht-lãxuântâm-11tlt
He 74 a-thltht-lãxuântâm-11tlt
Vidoop CouchDB Talk
Vidoop CouchDB Talk
Hotspot tools
Hotspot tools
#safaDojo - Coding Dojo Go lang
#safaDojo - Coding Dojo Go lang
Rabia
Rabia
Top 28 programming language with hello world for artificial intelligence
Top 28 programming language with hello world for artificial intelligence
Sayoo odoo open_erp
Sayoo odoo open_erp
Similaire à A toolbelt of seasoned bug hunter - Damir Zekic
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Puppet
Naughty And Nice Bash Features
Naughty And Nice Bash Features
Nati Cohen
Your Library Sucks, and why you should use it.
Your Library Sucks, and why you should use it.
Peter Higgins
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
Puppet
x86 & PE
x86 & PE
Ange Albertini
Bugs from Outer Space | while42 SF #6
Bugs from Outer Space | while42 SF #6
While42
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Ange Albertini
Hacking OOo 2.0
Hacking OOo 2.0
Alexandro Colorado
Open shift
Open shift
marcolof
ooc - A hybrid language experiment
ooc - A hybrid language experiment
Amos Wenger
ooc - A hybrid language experiment
ooc - A hybrid language experiment
Amos Wenger
Shifting gears with Composer
Shifting gears with Composer
Javier López
The Fuzzing Project - 32C3
The Fuzzing Project - 32C3
hannob
Raspberry Pi for IPRUG
Raspberry Pi for IPRUG
Frank Carver
Monitoring MongoDB (MongoSV)
Monitoring MongoDB (MongoSV)
Boxed Ice
A Partial Multiverse Model of Time Travel for Debugging
A Partial Multiverse Model of Time Travel for Debugging
awwaiid
Killer Bugs From Outer Space
Killer Bugs From Outer Space
Jérôme Petazzoni
Exploring the Internet of Things Using Ruby
Exploring the Internet of Things Using Ruby
Mike Hagedorn
Assembler
Assembler
Mario Granja Alvear
Biicode OpenExpoDay
Biicode OpenExpoDay
fcofdezc
Similaire à A toolbelt of seasoned bug hunter - Damir Zekic
(20)
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Boxen: How to Manage an Army of Laptops and Live to Talk About It
Naughty And Nice Bash Features
Naughty And Nice Bash Features
Your Library Sucks, and why you should use it.
Your Library Sucks, and why you should use it.
Boxen: How to Manage an Army of Laptops
Boxen: How to Manage an Army of Laptops
x86 & PE
x86 & PE
Bugs from Outer Space | while42 SF #6
Bugs from Outer Space | while42 SF #6
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Such a weird Processor: messing with opcodes (...and a little bit of PE) (Has...
Hacking OOo 2.0
Hacking OOo 2.0
Open shift
Open shift
ooc - A hybrid language experiment
ooc - A hybrid language experiment
ooc - A hybrid language experiment
ooc - A hybrid language experiment
Shifting gears with Composer
Shifting gears with Composer
The Fuzzing Project - 32C3
The Fuzzing Project - 32C3
Raspberry Pi for IPRUG
Raspberry Pi for IPRUG
Monitoring MongoDB (MongoSV)
Monitoring MongoDB (MongoSV)
A Partial Multiverse Model of Time Travel for Debugging
A Partial Multiverse Model of Time Travel for Debugging
Killer Bugs From Outer Space
Killer Bugs From Outer Space
Exploring the Internet of Things Using Ruby
Exploring the Internet of Things Using Ruby
Assembler
Assembler
Biicode OpenExpoDay
Biicode OpenExpoDay
Plus de Ruby Meditation
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Ruby Meditation
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Ruby Meditation
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Ruby Meditation
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Ruby Meditation
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
Ruby Meditation
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Ruby Meditation
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Ruby Meditation
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Ruby Meditation
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
Ruby Meditation
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
Ruby Meditation
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
Ruby Meditation
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
Ruby Meditation
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Ruby Meditation
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Ruby Meditation
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Ruby Meditation
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Ruby Meditation
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Ruby Meditation
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Ruby Meditation
Rails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan Gusiev
Ruby Meditation
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
Ruby Meditation
Plus de Ruby Meditation
(20)
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Is this Legacy or Revenant Code? - Sergey Sergyenko | Ruby Meditation 30
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Life with GraphQL API: good practices and unresolved issues - Roman Dubrovsky...
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Where is your license, dude? - Viacheslav Miroshnychenko | Ruby Meditation 29
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
Dry-validation update. Dry-validation vs Dry-schema 1.0 - Aleksandra Stolyar ...
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
How to cook Rabbit on Production - Bohdan Parshentsev | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Performance Optimization 101 for Ruby developers - Nihad Abbasov (ENG) | Ruby...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
Use cases for Serverless Technologies - Ruslan Tolstov (RUS) | Ruby Meditatio...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
The Trailblazer Ride from the If Jungle into a Civilised Railway Station - Or...
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
What/How to do with GraphQL? - Valentyn Ostakh (ENG) | Ruby Meditation 27
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
New features in Rails 6 - Nihad Abbasov (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Security Scanning Overview - Tetiana Chupryna (RUS) | Ruby Meditation 26
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Teach your application eloquence. Logs, metrics, traces - Dmytro Shapovalov (...
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Best practices. Exploring - Ike Kurghinyan (RUS) | Ruby Meditation 26
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Road to A/B testing - Alexey Vasiliev (ENG) | Ruby Meditation 25
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Concurrency in production. Real life example - Dmytro Herasymuk | Ruby Medita...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Data encryption for Ruby web applications - Dmytro Shapovalov (RUS) | Ruby Me...
Rails App performance at the limit - Bogdan Gusiev
Rails App performance at the limit - Bogdan Gusiev
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
GDPR. Next Y2K in 2018? - Anton Tkachov | Ruby Meditation #23
Dernier
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
apidays
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Jago de Vreede
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
apidays
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Jeffrey Haguewood
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
WSO2
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Deepika Singh
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
Sandro Moreira
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
Zilliz
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
jfdjdjcjdnsjd
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
The Digital Insurer
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
rafiqahmad00786416
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
AnitaRaj43
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
MIND CTI
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
Dernier
(20)
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
A toolbelt of seasoned bug hunter - Damir Zekic
1.
A Toolbelt of a
Seasoned Bug Hunter Damir Zekić
2.
3.
(["foo")
4.
Baaaad bugs Not
so bad bugs
5.
Silent bugs Loud
bugs
6.
2016: a debugging odyssey
7.
8.
Step 1: Reproduce
9.
Step 1: Reproduce SUCCESS
10.
Step 2: What
introduced it?
11.
git bisect
12.
13 37 c0
ff ee c0 de a0
13.
13 37 c0
ff ee c0 de a0 bug is present here "bad"
14.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
15.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
16.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
17.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
18.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
19.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
20.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
21.
13 37 c0
ff ee c0 de a0 bug is present here "bad" no bug 7 commits ago "good"
22.
13 37 c0
ff ee c0 de a0 cli-ff-hanger
23.
24.
Every commit must
be stable
25.
But, which commit was
"good"?!
26.
13 37 c0
ff ee c0 de a0 no bug 7 commits ago "good"
27.
$ ./find_slow.rb
28.
29.
Step 2: What
introduced it? UNSURE
30.
Brainstorming: Is it a
memory leak?
31.
A Problem: Ruby doesn't
release memory back to OS
32.
Brainstorming: Is it a
memory leak?UNSURE
33.
Assume it is and
check heap dumps
34.
35.
require 'objspace' ObjectSpace.trace_object_allocations_start class Foo def
bar puts "Hello, world!" end end foo = Foo.new foo.bar file = File.open("/tmp/heap.dump", 'w') ObjectSpace.dump_all(output: file) file.close
36.
$ wc -l
/tmp/heap.dump 33297 /tmp/heap.dump
37.
{"address":"0x7f9fa7076ea0", "type":"STRING", "class":"0x7f9fa70cfe10",
"embedded":true, "bytesize":13, "value":"Hello, world!", "encoding":"UTF-8", "file":"(irb)", "line":5, "method":"bar", "generation":13, "memsize":40, "flags": {"wb_protected":true}} {"address":"0x7f9fa7076ec8", "type":"IMEMO", "class":"0x7f9fa70dc2f0", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076ef0", "type":"IMEMO", "references":["0x7f9fa70dd4e8"], "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076f18", "type":"STRING", "class":"0x7f9fa70cfe10", "frozen":true, "embedded":true, "fstring":true, "bytesize":5, "value":"abort", "encoding":"US-ASCII", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076f40", "type":"STRING", "class":"0x7f9fa70cfe10", "frozen":true, "bytesize":59, "capacity":127, "value":"/Users/damir/.rbenv/versions/2.4.1/lib/ruby/x86_64-darwin16", "memsize":168, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076f68", "type":"IMEMO", "class":"0x7f9fa70dc2f0", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076f90", "type":"IMEMO", "references":["0x7f9fa70dd4e8"], "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076fb8", "type":"IMEMO", "class":"0x7f9fa70dc2f0", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7076fe0", "type":"IMEMO", "references":["0x7f9fa70dd4e8"], "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7077008", "type":"IMEMO", "class":"0x7f9fa70dc2f0", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7077030", "type":"IMEMO", "references":["0x7f9fa70dd4e8"], "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}} {"address":"0x7f9fa7077058", "type":"STRING", "class":"0x7f9fa70cfe10", "frozen":true, "embedded":true, "fstring":true, "bytesize":5, "value":"spawn", "encoding":"US-ASCII", "memsize":40, "flags":{"wb_protected":true, "old":true, "uncollectible":true, "marked":true}}
38.
{"address":"0x7f9fa7076ea0", "type":"STRING", "class":"0x7f9fa70cfe10", "embedded":true, "bytesize":13, "value":"Hello, world!", "encoding":"UTF-8", "file":"(irb)", "line":5, "method":"bar", "generation":13, "memsize":40, "flags":{"wb_protected":true}}
39.
$ gem install
heapy
40.
$ ./analyze_heapy_diffs.rb
41.
Class DSL objects survive
longest
42.
!
43.
Brainstorming: Let's trace a
call stack
44.
Flamegraphs
45.
46.
47.
48.
49.
Brainstorming: Let's trace a
call stackSUCCESS
50.
Internal framework creates
controllers Classes created by routing don't get destroyed Router removes methods from all controllers
51.
Now let's fix
it!
Télécharger maintenant