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
再コンパイル不要._core_dump_さえ吐ければ_gdb_デバッグできます.pdf
Search
Tomoya-Suzuki
December 12, 2020
Programming
0
500
再コンパイル不要._core_dump_さえ吐ければ_gdb_デバッグできます.pdf
PHP Conference 2020 のLTで発表した資料です。
Tomoya-Suzuki
December 12, 2020
Tweet
Share
More Decks by Tomoya-Suzuki
See All by Tomoya-Suzuki
安易に前職同僚飲み会に行ったら 売り上げのほぼないスタートアップに入社してた話
yamotuki
0
1.1k
Repositoryパターンを維持しながらN+1問題を起こさないようにする方法論について
yamotuki
2
1.5k
プログラマ三大美徳を実現するデプロイフローを目指して
yamotuki
0
1.1k
PHPでleetCodeのeasyレベル100問ノック
yamotuki
0
2k
Other Decks in Programming
See All in Programming
Amazon Qを使ってIaCを触ろう!
maruto
0
400
cmp.Or に感動した
otakakot
2
140
受け取る人から提供する人になるということ
little_rubyist
0
230
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
Ethereum_.pdf
nekomatu
0
460
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
1.1k
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.3k
EventSourcingの理想と現実
wenas
6
2.3k
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
220
Click-free releases & the making of a CLI app
oheyadam
2
110
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
506
140k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Rails Girls Zürich Keynote
gr2m
94
13k
GitHub's CSS Performance
jonrohan
1030
460k
Making Projects Easy
brettharned
115
5.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
Transcript
再コンパイル不要! core dump さえ吐ければ gdb デバッグできます 鈴木智也(@yamotuki)
2 事業売却と資金調達で次のステージへ 業界初の買い手の顔が見えるM&Aプラットフォーム
セグフォといえば core dump 覚えていってね 伝えたいこと
初めての人向け(セグフォとは) 説明 セグメンテーション違反はアクセスが許可されていないメモリ上の位置、もしくは許可さ れていない方法~~中略~~でメモリ上の位置にアクセスしようとするときに起こる (wikipedia 「セグメンテーション違反」より引用) 要するに メモリを触るプログラムがバグっていると起こる。プログラムが突然死ぬ。 PHPはよくテストされているのでPHPerが見ることは少ない。
とある日 私「なんか開発環境で Laravel の Artisan コマンドが通らない。出力1行。」 私「他に出力は?」 コンソール「ないです」
私「詰んでるじゃん」
けど、似た実装でコード沢山書かれてる。 撤退できない・・・
何か使えるものは・・・ 脳裏によぎる、「core dump 吐けばいいじゃん」の言葉。 そう。core dump さえ吐けばあとはなんとかなる。
core dump とは(ざっくり) プロセスが死んだ時のメモリの状態が入っているファイルのこと
core dump ってどう読み解くのだっけ? ?「エラーを吐いたバイナリ(PHP)を再ビルドして、core dump で状態復元して gdbで ステップずつ見ていくのだ」 参考: https://rat.cis.k.hosei.ac.jp/article/devel/debugongccgdb1.html
※gdb は昔からデバッグに使われている有名なツール
私「やりたくない」
気を取り直してまして
ちゃんと調べました
実は再ビルド不要だった 参考にした神のブログ: http://sarface2012.hatenablog.com/entry/20101027 これでOK。例えばこういう感じ
じゃあ core dump 吐くだけだね 設定ちょっと変えるだけ。 怖くないよ。 ※Amazon Linux v1 の場合。v2だとまた違うようです。
core dump 出た!
gdb に core dump 食わせる 死んだメソッドを教えてくれている!
さらに情報取得 そのまま gdb コマンドの対話状態になるので、where コマンドを使う。 どこを実行中だったかを出してくれる。
問題が特定できた memcached の igbinary シリアライザーが問題だと分かった。 確かに設定が入っている。 before ->
解決! igbinary を使用する必然性がなかったので設定変更で解決。 after ->
おしまい • セグフォ といえば core dump、覚えて行ってね! • 詳細は qiita に書いておきました
◦ https://qiita.com/yamotuki/items/4cec5359a3edec07bddf
WE ARE HIRING! M&Aクラウドでは 一緒に働く仲間を募集しています PR https://www.wantedly.com/companies/macloud