$30 off During Our Annual Pro Sale. View Details »
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
570
再コンパイル不要._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.4k
Repositoryパターンを維持しながらN+1問題を起こさないようにする方法論について
yamotuki
2
1.7k
プログラマ三大美徳を実現するデプロイフローを目指して
yamotuki
0
1.3k
Other Decks in Programming
See All in Programming
愛される翻訳の秘訣
kishikawakatsumi
3
350
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
19k
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
390
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
170
Java 25, Nuevas características
czelabueno
0
110
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
170
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
380
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
130
マスタデータ問題、マイクロサービスでどう解くか
kts
0
130
JETLS.jl ─ A New Language Server for Julia
abap34
2
460
チームをチームにするEM
hitode909
0
390
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
92
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Docker and Python
trallard
47
3.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
45
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
Highjacked: Video Game Concept Design
rkendrick25
PRO
0
250
Building Applications with DynamoDB
mza
96
6.8k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
320
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
89
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
Being A Developer After 40
akosma
91
590k
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