API(*.map)

提供: RAD Studio
移動先: 案内検索

ファイルの種類:インデックス への移動


マップ ファイルは普通のテキスト ファイルで、デバッグに役立つ情報としてプログラムのグローバル シンボル、ソース ファイル、ソース行番号が記載されています。 たとえば、(たとえば、アクセス違反のために)アプリケーションがクラッシュしたときは、結果として得られるアドレスを使用して、アプリケーションのクラッシュ箇所のモジュール(メソッド)を突き止めることができます。

マップ デバッグ ファイルの内容と形式

RAD Studio では、デフォルトで、以下を始めとする一般的なセグメント情報が記載されたマップ ファイルを生成します。

  • セグメントのリスト(セグメント名を含みます)
  • プログラムの開始アドレスとオフセット
  • クラス
    • CODE(実行可能な命令が記載されます)
    • DATA(プログラマによって初期化されたグローバル変数と静的変数が記載されます)
    • BSS(静的に割り当てられた変数が記載されます)
    • TLS(スレッド ローカル ストレージ)
  • リンク時に発生したあらゆる警告メッセージやエラー メッセージ
//hello.cpp
#include<iostream>
#include<string>
int main(int, char**)
{
  std::string s("hello world");
  std::cout<<s;
  return 0;
}

たとえば、上記のコード例の場合、.cpp ファイルのリンク後に作成されるマップ ファイルは次のようになります。

 Start         Length      Name                 Class
 0001:00401000 0000214D4H _TEXT                  CODE
 0002:00423000 0000059B8H _DATA                  DATA
 0003:004289B8 000002F24H _BSS                   BSS
 0004:00000000 00000009CH _TLS                   TLS

デフォルト情報に加えて -M オプションも指定して BCC32.EXE を呼び出す場合、.map ファイルには以下の 2 つのセクションがあります。

 Address Publics by Name
 
 0002:000024C4  @std@%basic_filebufテンプレート:B19std@%charb%%@3
 0002:000010E8  @std@%basic_filebufテンプレート:C19std@%charc%%@3
 0002:00002450  @std@%basic_iosテンプレート:B19std@%charb%%@3
 .
 .
 .
 
 Address Publics by Value
 
 0001:000000E4  _main
 0001:00000730  std::allocator<char>::allocator<char>()
 .
 .
 .

Address Publics by Name セクションには、開始アドレス(<セグメント>:<オフセット>)とシンボル(メソッド、変数など)のペアが記載されます。これらのペアはシンボルの名前でソートされます。Address Publics by Value セクションには、Address Publics by Name セクションと同じペアが記載されますが、こちらの方は値でソートされます。

マップ デバッグ ファイルの生成

Delphi プロジェクトが以下のいずれかの条件を満たす場合、そのプロジェクトをビルドすると、RAD Studio によってマップ デバッグ ファイルが生成されます。

  • ビルド対象が 32 ビット Windows、64 ビット Windows、macOS、または iOS シミュレータ向けのプロジェクトで、[マップ ファイル]オプション(プロジェクト|オプション...|Delphi コンパイラ|リンク 内)が[詳細]である。
  • ビルド対象が 32 ビット iOS デバイスまたは 64 ビット iOS デバイス向けのプロジェクトで、[プロジェクト|オプション...|Delphi コンパイラ|リンク[マップ ファイル ARM]オプションの値が、[マップ ファイルおよび .drc ファイル]である。

C++ プロジェクトをビルドすると、RAD Studio によってマップ デバッグ ファイルが必ず生成されます。

マップ デバッグ ファイルのファイル名は以下のようになります。

  • macOS 向け Delphi パッケージの場合:bpl<<プロジェクト>project>.dylib.map
  • それ以外の場合: <プロジェクト>.map

プロジェクトをビルドすると、マップ デバッグ ファイルがデフォルトでは以下のフォルダに生成されます。

  • パッケージ の場合:
    • 32 ビット Windows の場合: C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl
    • Delphi のその他のプラットフォームと C++ の 64 ビット Windows の場合: C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\<プラットフォーム>
    • C++ のその他のプラットフォームの場合: C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\<プラットフォーム>\<ビルド構成>
  • その他のプロジェクトの場合: C:\Users\<user>\Documents\Embarcadero\Studio\Projects\<プロジェクト>\<プラットフォーム>\<ビルド構成>

出力ディレクトリを変更するには:

  • Delphi の場合: [プロジェクト|オプション...|Delphi コンパイラ[パッケージの出力ディレクトリ]オプションを使用します。
  • C++ の場合: [プロジェクト|オプション...|C++ (共有オプション)[最終出力ディレクトリ]オプションを使用します。

トピック

関連項目