Existe-t-il un moyen de démarrer le processus à l’état suspendu?

Je veux lancer un processus en suspens. Est-il possible de le faire en utilisant uniquement des outils standard fournis avec Windows XP? Existe-t-il des outils tiers légers?

Problème que je tente de résoudre:
J’ai une application que je veux déboguer en utilisant Visual Studio 2005. J’ai la version de débogage avec les fichiers * .pdb nécessaires et j’ai toutes les sources référencées à partir de ces fichiers * .pdb. Je ne veux pas créer une solution vide qui exécutera cette application pour moi, alors j’essaie de m’attacher à ce processus après son lancement depuis un autre endroit. Une partie du code que je veux déboguer est exécutée au début du processus, donc je veux l’exécuter en mode suspendu, attacher un débogueur et le reprendre ensuite.

Je ne sais pas exactement ce que vous essayez de faire de votre question, mais peut-être que l’utilisation du débogueur NTSD fourni avec XP vous aidera à faire ce que vous voulez (par défaut, NTSD chargera le processus et s’arrêtera à la première instruction) .


À partir des informations mises à jour dans votre question, je vous suggère de télécharger le package des outils de débogage pour Windows de Microsoft et de déboguer les éléments de démarrage dans WinDbg. at que Visual Studio (WinDBg est un débogueur très puissant).

Ou vous pouvez simplement charger le programme dans le débogueur Visual Studio (sans solution) à partir de la ligne de commande:

devenv /debugexe yourprog.exe  

Vous pouvez facilement écrire une application qui le fera pour vous. Utilisez la fonction CreateProcess (), définissez l’indicateur CREATE_SUSPENDED dans les parameters dwCreationFlags .

Pour votre tâche spécifique, l’application peut effectuer les opérations suivantes: appeler CreateProcess () pour démarrer l’application et vérifier le code d’erreur, puis appeler MessageBox () pour vous demander de joindre le débogueur, puis après avoir appuyé sur un bouton de la boîte de message (MessageBox () renvoie) appelle ResumeThread () pour reprendre l’application.

Je me pose la même question depuis un certain temps et je viens juste de trouver ce petit outil très soigné qui fera exactement ce que vous voulez (et moi). Vous pouvez obtenir uniquement le binary ou la source.

http://www.codeproject.com/Articles/230005/Launch-a-process-suspended

En ce qui concerne les outils tiers légers:

SysInternals Process Explorer:
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

… vous permet de suspendre et de reprendre des processus. Il ne peut pas les “lancer” en suspens, mais peut être utile à vos fins de toute façon. C’est un téléchargement gratuit.