eyecatch thumbnail

gdb バックトレース / スタックトレース の見方

Profile picture
ルッチ / Lucci
2021.02.08

Contents


まとめ

  • 原則: フレーム番号 (#??) が大きい方が先に呼ばれた関数である

はじめに

どうも,たける@typememo です.

gdb のバックトレース / スタックトレースの読み方を理解したのでメモしておきます.

参考書籍:


バックトレース / スタックトレースの読み方

バックトレース / スタックトレースの読み方の原則は,

“フレーム番号が大きい方が先に呼ばれた関数である”

です.

例えば,以下のようなバックトレースが取れた場合.

#0 0x?? in test.c
#1 0x?? in util.c
#2 0x?? in base.c
#3 0x?? in main.c

この例でいうと, main.c (#3) => base.c (#2) => util.c (#1) => test.c (#0) の順番でコールされたことを意味しています.

gdb の読み方がわからない時の自分は,昇順で呼ばれるんだろうと思っていました.

こんな感じのイメージでした. #0 => #1 => #2 => #3

でも実際のコールされた順番は降順だったので,知った時は結構驚きでした.笑

良い勉強になりました.

おわりに

いかがだったでしょうか?

gdb のバックトレース/スタックトレースの読み方についてのメモでした.

最後までお読みいただきありがとうございました.


執筆機材


関連記事


大学生へのお知らせ

ここまで記事を読んでくれて本当に嬉しいです、ありがとうございます。

プログラミングを始めたばかりの頃って「やるぞ!」という気持ちは強めですが、 実際に取り組み始めると「何からどうやってどこまでやればいんだ?」 という感じで羅針盤を失うことが多いような気がします。(実体験)

そんな勉強熱心で向上心高めなんだけど目指す姿が曖昧な大学生の方に感謝の意も込めて、就職活動までサポートするプログラミングスクール「レバテックカレッジ」を紹介します。↓

Levtech-college

「自走力」のあるエンジニアを最短3ヶ月で目指せるカリキュラムが月額30,000円で用意されていて、 現段階の「目指す姿が曖昧で何から手をつければいいかわからない状態」から脱却できます。

自分は実際にIT企業で働いていますが、「自走力」のあるエンジニアの方にはいつも助けられています。

なので、目指す姿が曖昧な人はとりあえずレバテックカレッジが導いてくれる 「自走力のあるエンジニア」を目指してみるのはスタートダッシュとしてはアリです。

レベルアップしてからジョブチェンするのはRPGでも常套手段ですし、 レバテックカレッジで一通りのスキルを習得してから自分の目指す姿を再定義するといいかもです。

「自走力のあるエンジニア」って実際どんなエンジニアなの? 何から手をつければいいかわからないから教えて欲しい、 という人は上のテキストリンク/画像リンクから「無料相談会」への申し込みをお願いします。

よきエンジニアライフを!