GUIアプリケーションだったら起動すれば、ユーザーアクション以外では終了しないのでとても簡単です。起動してからゆうゆう、リモートマシンでデバッガアタッチすればいいのです。
しかしコンソールアプリケーションの場合、ユーザーの応答なんて待たないものも多いです。そりゃそうですよね、一括実行するためのものなんですから。そうなると困るのがリモートデバッグ。OSにVisual Studio入れて普通にデバッグもいいのですが、評価環境には極力余計なものは入れたくありません。せいぜいリモートデバッガまで。
そうなると、コンソールアプリケーションはどこかで入力待ちをする必要があります。簡単なのは特定の環境変数が設定されていればReadConsoleを使用して待つ。
TCHAR szBuffer[11]; DWORD dwRead; if(GetEnvironmentVariable("_DEBUG_DUMMY", szBuffer, 10) > 0) { HANDLE hConsole = GetStdHandle(STD_INPUT_HANDLE); ReadConsole(hConsole, szBuffer, 10, &dwRead, NULL); CloseConsole(hConsole); }
でもなんかダサいというか、環境変数設定しているの忘れそうです。いや、環境変数設定したコンソールを用意していればいいのですけど。うーん、なんかいい方法ないかな。特定のDLLが同じフォルダに存在していたらDLLのエントリポイント決めておいて、呼び出して止めるとか面白いかな…。