2015年07月26日
.pdb から .map ファイルを作成する
VS2012 を使用するようになってから、通常、デバッグビルド、リリースビルド共に、実行ファイルと .pdb ファイルが生成されるように運用してきたが、ふと、アプリケーションエラー時にどのアドレスで落ちたかを知るための手掛かりを得る .map ファイルを生成すべきかどうかが気になった
以前(VS6を利用してきた期間が長い)はリリースビルド時には、.pdb ファイルではなく .map ファイルを生成していたのだが、VS2012 に移行した際に、自動的に上記のような状況になっていた
最近までは特に気にしていなかったのだが、デバッガが無い状況で、アプリケーションエラーのアドレスだけ示されたときにどう追いかければいいのかが、ふと気になってしまった
そこで改めて調べてみたら、実行ファイルと .pdb ファイルがあれば、 .map ファイルを生成できることがわかったので、メモしておく
ところが、この /map オプションが MSDN ドキュメントにも、 dumpbin /? としても、出てこないのだ
見つけたのは、stackoverflow の投稿記事の応答の中である
オリジナルのソースが今のところ不明であるが、実際上出力内容は .map ファイル内容とほぼ同じである
違いとしては、通常コンパイルオプションで生成する .map ファイルは、リンクされた関数本体がどの .obj ファイル由来(どの .lib 由来)であるかがわかりやすい
一方、dumpbin の出力では、各関数のサイズがわかりやすいという違いがある
一般的には関数のエントリポイントとエントリポイントの間のどこかで例外となるので、サイズがわかる方が便利かもしれない
ただ、常に .map を生成するようにしておくと、ディスク容量がもったいないので、現状のように .pdb だけ生成しておき、必要になったら .map 情報を生成して調査する方がいいと思う
★☆★☆★☆ ナウでヤングなレンタルサーバー!ロリポップ! ☆★☆★☆★
月額100円(税抜)〜容量最大400GB!大人気のWordpressも簡単インストール★
海外向けのネットショップ作成サービスならJugem Cart
以前(VS6を利用してきた期間が長い)はリリースビルド時には、.pdb ファイルではなく .map ファイルを生成していたのだが、VS2012 に移行した際に、自動的に上記のような状況になっていた
最近までは特に気にしていなかったのだが、デバッガが無い状況で、アプリケーションエラーのアドレスだけ示されたときにどう追いかければいいのかが、ふと気になってしまった
そこで改めて調べてみたら、実行ファイルと .pdb ファイルがあれば、 .map ファイルを生成できることがわかったので、メモしておく
dumpbin /map appl.exe > appl.map
ところが、この /map オプションが MSDN ドキュメントにも、 dumpbin /? としても、出てこないのだ
見つけたのは、stackoverflow の投稿記事の応答の中である
オリジナルのソースが今のところ不明であるが、実際上出力内容は .map ファイル内容とほぼ同じである
違いとしては、通常コンパイルオプションで生成する .map ファイルは、リンクされた関数本体がどの .obj ファイル由来(どの .lib 由来)であるかがわかりやすい
一方、dumpbin の出力では、各関数のサイズがわかりやすいという違いがある
一般的には関数のエントリポイントとエントリポイントの間のどこかで例外となるので、サイズがわかる方が便利かもしれない
ただ、常に .map を生成するようにしておくと、ディスク容量がもったいないので、現状のように .pdb だけ生成しておき、必要になったら .map 情報を生成して調査する方がいいと思う
★☆★☆★☆ ナウでヤングなレンタルサーバー!ロリポップ! ☆★☆★☆★
月額100円(税抜)〜容量最大400GB!大人気のWordpressも簡単インストール★
海外向けのネットショップ作成サービスならJugem Cart
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/3976216
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック