
19.8
プロファイリング
677
最後に、マルチスレッドプログラムの開発では、共有メモリアクセスがどのように働く
か、スレッドライブラリが提供する制御機能(14章を参照)と合わせて理解しておく必要が
ある。最適化がメモリアクセス演算の順序変更や単一スレッドのスコープでコンパイラに
は余分に見える演算を削除することすらあるからだ。
とにかく、実行時性能をできる限り高めたり、Cプログラムの正確なマシンコードを
GCCがどのようにして生成したかの詳細を知りたければ、プログラムの性能をさまざまな
最適化オプションについてテストして比較するしかない。
19.7
デバッグ
-g
オプションを使ってGCCのオブジェクトおよび出力される実行ファイルにシンボル
とソース行の情報を追加できる。この情報を使ってデバッグプログラムはプログラムのス
テップ実行でレジスタやメモリの変数の内容を表示できる(デバッグについては21章を参
照)。こ
のシンボル情報には多くの形式があり、GCCは各システムごとのネイティブ書式を
デフォルトで使う。
-g
オプションに接尾辞を使ってシンボル情報をシステムのネイティブ書式とは異なる書
式で格納することもできる。使用する特定のデバッグプログラムに適合するためにこれを
使うこともある。例えば、オプション
-ggdb
はGNUデバッガGDBでデバッグするための
システムで利用可能な最適書式を選ぶ。
シンボル情報は、実行ファイルのサイズを場合によっては倍以上に増やすので、デバッ
グとテストを終えた後、
-g
オプションなしで ...