広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2015年07月26日

.pdb から .map ファイルを作成する

VS2012 を使用するようになってから、通常、デバッグビルド、リリースビルド共に、実行ファイルと .pdb ファイルが生成されるように運用してきたが、ふと、アプリケーションエラー時にどのアドレスで落ちたかを知るための手掛かりを得る .map ファイルを生成すべきかどうかが気になった

以前(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

Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: