場合など、他のプロセスからシグナルが送られてきているときに役立ちます。これだけの情報がデバッガを立ち上げなくても得られるのはなかなか便利ではないかと思います。関数名はシンボル名が削られているバイナリでは表示されません。内では次のような処理をシグナルハンドラの中で行っています。スタックトレースを取得する。この処理はアーキテクチャごとに異なります。場合はフレームポインタをたどることによってスタックトレースを取得できます。いうライブラリに任せています。アドレスを関数名に変換する。取得したスタックトレースは生のアドレスのリストです。アドレスだけでは不便なので、アドレスを関数名に変換してやります。この処理はバイナリフォーマットに依存します。いう関数を使って変換を行います。関数名を読みやすくする。(この変換はマングリングと呼ばれます)。(この変換はデマングリングと呼ばれます)。行うようにがんばっています。して「アドレスからファイル名と行番号を取得する」を追加したいと考えています。スタックトレース表示機能を紹介しました。プログラムのデバッグは難しいケースも多いのですが、簡単なケースのデバッグはスタックトレース表示によって効率化できるのではないかと思います。使ってスタックトレースを表示する方法についてご紹介します。プログラムを書いているとよく遭遇するのがセグメンテーション違反というエラーです。いうファイルが作られます。ファイルにはデバッガから参照できるいろいろな情報が残っていますが、多くの場合に役に立つのは、スタックトレースという情報です。スタックトレースを見れば、プログラムがどこでクラッシュしたのか、どのような関数を経由してそこにたどり着いたのかがわかります。プログラムがクラッシュした箇所を特定できれば、単純なバグは容易に修正できます。ファイルは有用なのですが、いちいちデバッガを立ち上げるのは少々面倒です。社内では、プログラムがセグメンテーション違反などを起こしたときはスタックトレースを表示してから終了するように工夫しています。プログラムでエラー終了時にスタックトレースが表示されるのと同じ感じです。用のログライブラリに含まれています。提供するシグナルハンドラーがセットされます。プログラムがそれらのシグナルを受け取ると、次のようなスタックトレースを表示してから終了します。関数が大きい場合、関数の中のどの行でクラッシュしているか知りたいときがあります。ファイル名と行番号を取得できます。ファイルを紛失しているときに役立ちます。いう経路を辿っている。