2010-11-30 6 views
0

Je tente de lancer une application via l'appel API ShellExecute(). Cette application contient uniquement une fonction principale qui effectue un traitement et se termine. Maintenant j'ai mis DebugBreak() au début de main. Lorsque ShellExecute() est appelée, l'application est lancée avec succès mais elle ne demande pas de rupture.Application de débogage lors du lancement via ShellExecute

Comment puis-je déboguer mon application lorsqu'elle est lancée à partir d'une autre application en utilisant ShellExecute()?

J'utilise VC++.

Répondre

1

Si DebugBreak() n'est pas conçu pour vous, essayez _CrtDbgBreak(). Notez que _CrtDbgBreak ne fonctionne que dans une version de débogage.

_CrtDebugBreak fonctionne vraiment pour moi de faire une pause de processus lancé au démarrage, bien que je suis assez sûr que DebugBreak aussi.

Notez que les deux fonctions donneront l'impression que le processus a planté, car elles déclenchent une exception. C'est normal et vous donne la possibilité d'attacher un débogueur via la boîte de dialogue de crash. Notez également que si vous avez un gestionnaire d'exceptions SEH attrape-tout autour de votre main, alors l'exception sera levée par DebugBreak avalé et l'application sortira simplement sans montrer la boîte de dialogue d'accident ou vous laisser attacher à elle.

0

vous pouvez essayer cela, c'est ok dans le système xp.

app.exe est votre nom de l'application,

...- -s1 s3 est des arguments de ligne de commande. HINSTANCE hRet = ShellExecute (NULL, L "ouvert", L "vsjitdebugger.exe", L "app.exe -s1 a1 -s2 a2 a3 -s3", szExePath, SW_SHOW);

Questions connexes