vsjitdebugger

vsjitdebugger.exeというプログラムはコマンドラインからデバッガーを起動する。

vsjitdebuggger /?

ってやると、ダイアログに、

---------------------------
Visual Studio Just-In-Time Debugger
---------------------------
Microsoft (R) Visual Studio Just-In-Time Debugger
Copyright (C) Microsoft Corporation. All rights reserved.

usage: VsJITDebugger [options]

options:

-p [process id] 	: Attach a debugger to [process id]

[AppName] [Args]	: Launch the specified executable and attach a debugger

-?		: Show this dialog
---------------------------
OK   
---------------------------

という表示がされる。-p プロセス番号か、アプリ名と引数を指定する感じらしい。

しかしながら、実のところ、アプリ名と引数では動かない。困ってしまう。どうやら、Connectに登録されていた問題らしいのだが、仕様と言うことらしい。良く分からん。

で、プロセス番号でアタッチできるんだけど、プロセス番号じゃなくて、プロセスの実行ファイル名でアタッチしたい場合にはどうするべきか。

答えを書くと、

for /f "tokens=2 delims=," %%i in ('tasklist /FI "IMAGENAME eq hoge.exe" /FO CSV /NH') do vsjitdebugger -p %%~i

ってやると、hoge.exeにアタッチできる。ただし、上記は、バッチファイル上での表記。コマンドラインからやるときは、%%i、%%~iを%i、%~iに置き換えること。