処理系が作成するテーブルで、シンボル(ソースコードに現れる名前、あるいはそこに追加情報を付加したもの)と、その型やメモリアドレスなどの対応関係を一覧にしたテーブルです。
コンパイラが生成するオブジェクトファイルには、グローバル変数のように外部からみえる場所にあるシンボルに関する情報を集めたシンボルテーブルが含まれることがあり、リンクの過程で、リンカが参照解決のために使用します。
リンカは、最終的に出力される実行可能ファイルの中にシンボルテーブルを含めたり、マップファイルとして独立して出力したりできます。こういった情報が存在することによって、デバッガが変数の値を表示したり(ウォッチ)、関数の呼び出し履歴(コールスタック)を表示したりするときに、把握しづらいメモリアドレスではなく、シンボル名を提示することができるようになり、分かりやすくなります。また、プログラマーも、各シンボルがメモリ上のどこに配置され、どれだけの領域を取っているのか(予想外に多くのメモリを使っているコードを見つけられる)、近くに配置されているものは何か(バッファオーバーランの調査などで役に立つことがある)といったことを把握することができます。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |