読者です 読者をやめる 読者になる 読者になる

情報は力ではない

VimとかC++とかCUDAとか。

ゲームエンジン・アーキテクチャ第2章

第2章のタイトルは「仕事用ツール」。この章では主にバージョン管理システムMicrosoft Visual Studio、それからプロファイリングツールメモリリーク、メモリ破壊の検出について記述している。

2.1 バージョン管理

バージョン管理システムを幾つか紹介した後、SubversionTortoiseSVNを用いてコミットやマージについて説明している。

2.2 Microsoft Visual Studio

ソースファイルは翻訳単位。コンパイラが見るものは全て翻訳単位。

リンカの仕事

  • 全てのマシンコードの最終的な相対アドレスを計算する
  • それぞれの翻訳単位における関数やグローバルデータに対する全ての外部参照が必ず適切に解決されるようにすること

一般的なビルド構成

  • Debug, Release
  • 製品ビルド
    • 全てのデバッグ情報を取り除き、アサートは無効化する。最適化も行う。
  • ツールビルド
    • よくわかっていない。
  • ハイブリッドビルド
    • 翻訳単位の大部分がリリースモードでビルドされ、少しの部分がデバッグモードでビルドされている構成。
    • Visual Studioでは翻訳単位ごとのビルド構成を設定できないので設定するのが面倒らしい。

コードのデバッグ

Visual Studioのウォッチウィンドウは便利っぽい。
今までちゃんとVisual Studioのデバッガを学んで使ったことがなかったので知らないことがちらほらあった。

  • CやC++の指揮をウォッチウィンドウに入力することが出来ることや関数を呼び出すことが出来る
  • ウォッチウィンドウの中で式にサフィックスを付けることでデータを表示する方法を変更できる
    • ",d", ",x"というサフィックスはそれぞれ10進、16進でデータが表示されるようにする
    • ",n"(nは非負整数)はn個の要素を持つ配列として値を処理することができるようにする
  • データブレークポイント

2.3 プロファイリングツール

大まかに2種類ある

  • 統計的プロファイラ
  • 計測的プロファイラ

CやC++プログラマは全員、少なくとも目的とするCPUのアーキテクチャをそれなりに熟知していなければならない(p.91)

なるほどなぁ。