CivilizationIV.ini を編集してログ出力をonに。
LoggingEnabled = 1 SynchLog = 1 OverwriteLogs = 1
My Documents\My Games\Beyond the Sword(J)\Logs に PythonErr.log, PythonDbg.log が出力される。
ポップアップは煩わしいので HidePythonExceptions は有効に、ログファイルを直接見た方が良い。tail -f もしくはそれに類するツール(例えばTail for Windows)を使うとリアルタイムでログが見られるので便利。
CivilizationIV.ini で
CheatCode = chipotle
とすると、ゲーム中Shift+@(英語キーボードではShift+~)でPython Consoleが開く。入力は英字配列として認識されるの注意。またCtrl+zでデバッグモードになる。
最も手軽な手法である。任意の箇所にprint文を挿入し、PythonDbg.logに出力する。
print "ok, works fine."
CvUtil.pyPrint() を呼ぶのが行儀の良い作法だが、別にprintだけでも良い。
HAP Python Remote Debugger が利用できる。SourceForge.net: HAP Python Remote DebuggerからダウンロードしてHapDebugger.exeを起動。おそらくpython24.dllがないと言われるので適当に入手して同フォルダに置く。CivilizationIV.ini で
HAPDebugger = 1
としてゲームを起動。フルスクリーンにすると操作が利かなくなるのでwindowモードで。InitPythonと表示されて起動が止まる。HapDebuggerに何でもいいのでPythonファイルをドラッグして開き、メニューの Debug > Connect Remote Debug... を選択、そのままOKを押すとデバッグが開始されゲームが再開する。使い方は一般的なデバッガと同様。
Pythonファイルを開いて、興味のある行の左側をクリック。赤丸が出る。この位置をブレークポイントと呼ぶ。ゲームが進行してプログラムがブレークポイントに達すると、ゲームが一時中断されてデバッガがアクティブになる。
メニューの View > Debug Windows から有益な情報が得られる。
デバッガ上部のツールボタンでプログラムの実行を操作する。現在位置はCall Stackで確認。
このようにデバッガを使うと実行中のコードを調べる事ができる。