2010-11-22 6 views
5

J'ai une application console qui se bloque avec une erreur d'E/S 6 lorsque la sortie est redirigée vers un fichier. Cela a probablement quelque chose à voir avec le fait que l'application console change la couleur du texte, ce qui n'a pas beaucoup de sens dans un fichier.Comment déboguer une application Delphi avec une sortie redirigée

  • Cela fonctionne: c:\dir\app.exe
  • Cette plante: c:\dir\app.exe >out.txt

Quand je l'offre >out.txt comme paramètre dans l'IDE (run\parameters\parameters\), je viens d'obtenir >out.txt comme paramètre.

Comment puis-je déboguer l'application avec la sortie stdout redirigée vers un fichier au lieu de la console?

Répondre

12

Redirection est faite par l'interpréteur de ligne de commande, dans les fenêtres, il est cmd.exe

Pour debug l'application, il suffit de lancer un cmd.exe avec des arguments propers pour lancer votre application et rediriger la sortie, par exemple:

cmd.exe/c "votreapplication.exe> ​​redirect.txt"

Pour ce faire à l'intérieur IDE afin de débogage, configurer cmd.exe comme l'application hôte (Run/Paramètres):

Run/Parameters dialog

Mettez un point d'arrêt où vous voulez arrêter, et le lancement un nouveau cmd.exe (projet/processus de charge) avec « Run to première source » après l'action de charge:

Load process dialog

Et vous avez terminé ... le débogueur doit arrêter l'application à votre point d'arrêt.

2

Vous pouvez essayer le débogage à distance:

  • au début de l'application, ajoutez une ReadLn; qui vous donne le temps d'attacher au processus à partir de Delphi

  • démarrer l'application à partir d'une commande ligne (spécifiant le paramètre> out.txt)

  • dans Delphi, connectez-vous au processus d'application (Run | Attach to Process...), définissez un point d'arrêt, puis passez à l'application pour entrer une clé

Astuce: un point d'arrêt de débogage peut également être définie dans le code:

asm 
    int 3 
end; 
0

Assurez-vous qu'il ne tombe pas en panne en raison des autorisations de répertoire. Qualifiez complètement le chemin du fichier de sortie dans un endroit où vous êtes sûr de pouvoir écrire. Sinon, Windows7 peut jouer à des jeux avec le répertoire. (Truc de VirtualStore).

Questions connexes