(1) GitHub\satoriya-shiori\satoriya\satori\satori.sln を開いた後、
メニューの「デバッグ」→「satori のデバッグ プロパティ」を開く。
■ satori.dll の Visual Studio Community 2022 でのデバッグ設定 (SSP を使う方法 1/5)
(2) 「構成(C)」 が 「Debug」 になっていることをチェックして、
「全般」の中の、
「出力ディレクトリ」 を .\Debug\ → 「対象ゴーストの ghost\master」 に変更する。
※ satori.dll に加えて satori.pdb (19MB位) も一緒に出力されることに注意!
このデバッグ作業専用のゴーストさんを用意することを勧めます。
■ satori.dll の Visual Studio Community 2022 でのデバッグ設定 (SSP を使う方法 2/5)
(3) 「デバッグ」の中の、
「コマンド」 … $(TargetPath) → 「ssp.exe のフルパス」
「コマンド引数」 … (空) → 「/g (フォルダ名/ゴースト名)」
「作業ディレクトリ」 … $(ProjectDir) → 「対象ゴーストの ghost/master」 に設定する。
【参考】 SSP起動オプション一覧
■ satori.dll の Visual Studio Community 2022 でのデバッグ設定 (SSP を使う方法 3/5)
(4) 「リンカー」→「デバッグ」の中の、
「デバッグできるアセンブリ」 を 「はい (/ASSEMBLYDEBUG)」に変更する。
最後に 「OK」 をクリックして、変更を適用する。
【参考】 DLL プロジェクトをデバッグする - Visual Studio (Windows) | Microsoft Learn を参照。…不要?
https://learn.microsoft.com/ja-jp/visualstudio/debugger/debugging-dll-projects?view=vs-2022
■ satori.dll の Visual Studio Community 2022 でのデバッグ設定 (SSP を使う方法 4/5)
(5) 元の画面に戻ったら、ブレークポイントに設定したい行で F9 を押して設定 (左端に●が出たら設定OK) して、
「ローカル Windows デバッガー」であることを確認してクリック (ショートカットキーはF5) すれば、デバッグ開始。
■ satori.dll の Visual Studio Community 2022 でのデバッグ設定 (SSP を使う方法 5/5)
(1) Narazawaさんのリポジトリより shioricaller の Release (2023/01現在は v2.0.0) を取得する。
https://github.com/Narazaka/shioricaller
(2) shioricaller.zip を解凍して、 Debug フォルダに
- shioricaller.exe
- request.txt
- dictest.txt
(※ dic*.txt ならOK…というか里々のロード時に読み込まれるものなら全部OK)
の3ファイルを配置。
※ 文字コードは Shift_JIS でないとダメっぽいです。
(返ってくるレスポンスが Shift_JIS 固定っぽい?ので文字化けします)
※ 里々の場合は request.txt の空白2行(改行2回)も重要でした。
1行だと dic*.txt の中身が読み込まれない(っぽい)?
※ 普通に里々を起動した時と同様、
satori_conf.txt の *初期化 とかも普通に使えます。
★ 最重要ポイント ★
request.txt 内で、
SecurityLevel: local を指定しないと、関数が動作しません!
例えば local/Localでないので蹴りました: vncall 等になります。
【情報元】 タタキノフさんのトゥート
■ satori.dll の Visual Studio Community 2022 でのデバッグ設定 (shioricaller.exe を使う場合 1/3)
● request.txt の中身(一例)
----------------------------
GET SHIORI/3.0
ID: OnTest
SecurityLevel: local
Reference0: 区切りたい,文字
Reference1: ,
----------------------------
※ ↑里々の場合、この空白2行も重要です。
※ request.txt も色々弄れるみたい。
【参考】 Don さんの MahjongUtil
https://github.com/nikolat/MahjongUtil/commit/d157948f7f8a7c552e7c973caf2e0526a9cdf23a
● dictest.txt の中身(一例)
----------------------------
*OnTest
$v0 (R0)
$v1 (R1)
(vncall,split,v0,v1)
(S0)
(S1)
----------------------------
※ OnTest の内容は、
テストしたい処理に応じて、
適宜書き換えて下さい。
(3) 設定は以下の通り:
「出力ディレクトリ」 は .\Debug\ (初期値) でOK。
「コマンド」 … $(ProjectDir)Debug\shioricaller.exe (※フルパスでないと×)
「コマンド引数」 … satori.dll .\ < request.txt > responce.txt (※responce.txtは任意、デバッグには便利)
「作業ディレクトリ」 … $(ProjectDir)Debug\ (※フルパスでないと×)
(4) あとは SSP を使用する場合と同じようにデバッグを実行するだけです。
※ この時、れしばを立ち上げておくと(里々を呼び出しているので)ちゃんとログが取れます!タタキノフさんに感謝…!
■ satori.dll の Visual Studio Community 2022 でのデバッグ設定 (shioricaller.exe を使う場合 2/3)
Don さんのトゥートより、全部間接指定(MSBuild的にはマクロ)でもやれることが分かったので追記。
$(ProjectDir)$(OutDir) → このプロジェクトが出力するDLLのカレントディレクトリ
$(ProjectDir)$(OutDir)$(TargetName)$(TargetExt) → このプロジェクトが出力するDLLのフルパス
を使えば、
「記述を変えることなく satori.dll 以外のプロジェクト(例えば自分で組んだ SHIORI とか!)にも対応できる」し、
「shioricaller.exe の配置を、プロジェクトの出力先と別にすることもできる」ので、汎用性が高くなっていいなと思います。
例えば、(Don さんのトゥートの)以下の記述は、
(ProjectDir)
┣ Debug
┗ shioricaller
とした場合の記述例です。第二引数 (dirpath) の記述は要注意!
(shioricaller.exe のディレクトリではなく .dll のカレントディレクトリ にしないといけない)
※ satori.dll 固有の問題ですが、(satori.dll が同一ディレクトリの辞書を読みに行く都合上)
dic*.txt や satori_conf.txt は satori.dll と同一ディレクトリに配置する必要があります。
「コマンド」
… $(ProjectDir)shioricaller\shioricaller.exe
「コマンド引数」
… $(ProjectDir)$(OutDir)$(TargetName)$(TargetExt) $(ProjectDir)$(OutDir) < request.txt > responce.txt
「作業ディレクトリ」
… $(ProjectDir)shioricaller\
■ satori.dll の Visual Studio Community 2022 でのデバッグ設定 (shioricaller.exe を使う場合 3/3)