4

コンテクスト:

マイクロコントローラー用のC++コードを書いていますが、各クラス/関数/stlがコードサイズにどの程度貢献しているかを知りたいと思います。この情報を確認するために、マップファイルの.textセクションを検索しました。また、いくつかの.objdumpファイルが表示されます。どこから始めればいいのか少し迷っています。

質問:

  1. マップファイルの解釈方法に関するマイクロコントローラーのチュートリアル/例、
  2. マップファイルのシンボルを理解する方法に関する一般的な例、
  3. スタックサイズ、コードサイズなどを分析するために使用できる任意のコントローラー/コンパイラーに使用できるユニバーサルファイル(.mapなど)ですか...

PS:私はこの http://www.tenouk.com/ModuleW.htmlのようなリンクからコンパイルプロセスについても学んでいます

ありがとう

4

1 に答える 1

3

マップファイルはリンカによって生成され、ファイルの形式はリンカごとに異なります。最善の策は、リンカー自体のドキュメントです。「一般的な」チュートリアルはありそうにありません。ただし、ほとんどの場合、マップファイルは、シンボル、それらの場所、およびそれらのサイズの単なるテーブルです。通常、静的データとコードスペースのメモリ使用量の全体的な要約があります。そのように「教える」ために何があるのか​​わかりません。

一部のリンカは、各関数のスタック使用状況分析など、他の情報をマップファイルに配置できます。重要な値は、main()と任意のタスク/スレッドおよびISRエントリポイントの値です。

相互参照テーブルやコールグラフを生成するものもありますが、ほとんどの場合、適切なIDEまたはコードナビゲーションまたはドキュメントツールがより有用な結果を生成します。

最善の策は、使用しているマップファイルの問題の原因となっている特定の部分に関する質問を投稿することです。

于 2012-07-13T21:16:54.630 に答える