Y a-t-il un moyen d'utiliser le remplacement populaire de cmd.exe Console2 pour le débogage de Visual Studio ? En d'autres termes, lorsque je débogue une application console sous VS, je veux qu'elle utilise Console2 au lieu de cmd.exe.
Réponses
Trop de publicités?Question intéressante. J'ai examiné cela, il y a quelques options mais aucune n'est jolie.
Console.exe prend des arguments, il est donc possible de le démarrer avec un onglet spécifique et d'exécuter un processus arbitraire. Cependant, ce processus sera toujours exécuté dans son propre cmd.exe; par exemple, si votre programme est c:\my.exe et que vous lancez Console comme console.exe -t tabname -r c:\myexe
, Console2 appelle en interne CreateProcess( ... cmd.exe c:\my.exe ... )
, en conséquence vous ne pouvez même pas voir la sortie de my.exe. Cela se résout facilement cependant: lancez-le comme console.exe -t tabname -r "/k c:\myexe"
: l'interrupteur /k fait rester actif le cmd.exe et vous pouvez voir la sortie standard de votre programme. (J'ai examiné le code source mais je n'ai pas trouvé de moyen de 'attacher' un onglet à une instance de Console en cours d'exécution, donc le lancement avec des arguments créera toujours une nouvelle instance, je ne suis pas sûr que c'est ce que vous recherchez?)
Vous pouvez facilement modifier les propriétés de débogage du projet pour refléter ce qui précède:
Commande : /chemin/vers/console.exe
Arguments de commande : -t tabname -r "/k $(TargetPath)"
Lorsque vous lancez votre exe depuis VS, il lancera votre exe dans une session Console. Cependant, le débogage ne fonctionnera pas car VS essayera de déboguer console.exe, pas my.exe car il s'agit maintenant d'un processus différent. Mettre un DebugBreak();
comme première ligne dans le main() de votre exe résoudra un peu ce problème, car il vous donnera l'option de déboguer votre exe. Dans l'ensemble, cela pourrait être un peu trop compliqué pour obtenir ce que vous voulez, mais je ne pense pas qu'il y ait d'autre moyen: Console crée toujours un nouveau processus, donc la seule façon de le déboguer est de rattacher le débogueur à ce processus une fois qu'il a démarré.
Scott Hanselman a parlé de cela.
Il suggère d'utiliser cette valeur pour Paramètres de la console > onglets > Principal > Shell :
%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86
Malheureusement pour moi, cela ne semble pas fonctionner pour Visual Studio Express 2010, qui ne contient pas de fichier vcvarsall.bat.