31 votes

Utilisez Console2 pour le débogage de Visual Studio ?

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.

8voto

stijn Points 13405

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é.

0voto

Logan Bender Points 64

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X