Skip to content

Instantly share code, notes, and snippets.

@neguse11
Last active January 13, 2016 11:48
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save neguse11/bd550d902fdf9ba6503a to your computer and use it in GitHub Desktop.
Save neguse11/bd550d902fdf9ba6503a to your computer and use it in GitHub Desktop.
CM3D2でのVisual Studioデバッガ使用方法

1.07, x64用。バックアップをとってから試してね

  1. Visual Studio Community 2015 をインストール
  2. https://www.visualstudio.com/features/unitytools-vs の 「無償 VS Tools for Unity」から「vstu2015.msi」をダウンロードしてインストール
  3. http://www.mono-project.com/download/#download-win から「mono-4.0.3-gtksharp-2.12.26-win32-0.msi」をダウンロードしてインストール
  4. http://unity3d.com/jp/get-unity/download/archive の「Unity 4.6.8」内にある「Unity エディター」から「UnitySetup-4.6.8.exe」をダウンロード。*インストールはしない*
  5. 「UnitySetup-4.6.8.exe」を 7z で展開 (ここでは 7-Zip 9.20を使って 7z x UnitySetup-4.6.8.exe で展開) して、「$_OUTDIR/windowsstandalonesupport/Variations/win64_development/player_win.exe」を「C:\CM3D2_KAIZOU\CM3D2x64.exe」として上書きコピー
  6. 「C:\CM3D2_KAIZOU\CM3D2x64_Data\PlayerConnectionConfigFile」を開き、「listen 1719714488 0 0」を「listen 1719714488 1 1」に書き換え
  7. ここで、一旦「C:\CM3D2_KAIZOU\CM3D2x64.exe」を起動して右下に「Deveopment Build」の表示が出るのを確かめる
  8. さらにVisual Studioを起動して「DEBUG -> Attach Unity Debugger」を実行。「Select Unity Instance」ダイアログが出るので、その中に「WindowsPlayer」があることを確認
  9. まだデバッグはできないので、とりあえず確認したら、Visual StudioとCM3D2x64.exeを閉じる
  10. UnityInjector用プラグインをデバッグビルドする (CM3D2.hoge.Plugin.dll とします。pdbも出ていることを確認してね)
  11. コマンドラインでDLLが生成されたディレクトリ(bin/Debug/など)に移動して、"C:\Program Files (x86)\Mono\Bin\pdb2mdb.bat" CM3D2.hoge.Plugin.dllを実行。実行に成功すると「CM3D2.hoge.Plugin.dll.mdb」が出力される
  12. 「CM3D2.hoge.Plugin.dll」と「CM3D2.hoge.Plugin.dll.mdb」をUnityInjectorフォルダーへコピー
  13. 7と8を実行してデバッガをアタッチする
  14. CM3D2.hoge.Plugin.dll内のコードでブレークポイントをつけてみて、停止すれば成功

KSP民の努力に感謝

注意点 : Unityプレイヤーのバージョンを合わせる

バニラのCM3D2x64.exeと差し替えるplayer_win.exeのバージョンを合わせないと、うまく動かないときがあります。 バージョンはエクスプローラーでバニラのCM3D2x64.exeのプロパティーを出して「詳細」タブの「製品バージョン」で確認できます。 この「製品バージョン」と同じバージョンのUnityに含まれるplayer_win.exeを使ってください。

Monoのバージョン

古い Mono (4より前) や Unity (4.x) に含まれるpdb2mdbは新しいVisual C#が出力するpdbファイルに対応していません。 新しい Mono (4.x) や Unity (5.x) に含まれるpdb2mdbを使ってください

Assembly-CSharpのデバッグ

  • ReiPatcherでパッチをあてる
  • Assembly-CSharp.dllに対して、dotPeek等でソリューションのエクスポートをしてAssembly-CSharp.pdbを作る
  • pdb2mdbでmdbを作る
  • mdbをCM3D2x64_Data\Managed\にコピー
  • CM3D2x64を起動
  • VisualStudioを起動して DEBUG -> Attach Unity Debugger でアタッチ
  • VisualStudio内の FILE -> Open -> File (Ctrl+O) で dotPeek で作った GameMain.cs を開く
  • 「Update()」を検索して、ブレークポイントを置く
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment