Eclipse CDT sortie de la Console ne s'affiche pas en debug avec chemin d'accès et ne s'affiche pas dans exécuter sans chemin
Je vais essayer d'obtenir Eclipse CDT (64 bits eclipse), travaille sur Windows 7 avec GCC. Quand je me suis GDB de travail (qui était un défi en soi), l'exécution du programme en mode debug était la seule façon dont je me suis sortie. Fonctionnant normalement, il ne donne aucune sortie de la console. Après des heures de recherche sur google, j'ai compris que si j'ai ajouté C:/cygwin/bin mon environnement path dans eclipse, j'ai pu obtenir de sortie lors de l'exécution du programme normalement. Ensuite, j'ai couru en mode débogage et il n'y avait pas de sortie. J'ai testé cette une couple de fois pour s'assurer qu'il a été l'ajout du chemin d'accès à l'origine du problème. C'est le programme que je courais,
#include <iostream>
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
Alors, comment puis-je obtenir à la fois normal et modes de débogage de travail, et pourquoi ai-je inclure ce chemin en premier lieu (il est déjà dans ma cygwin chemin et pourquoi ne CDT besoin?) ? Aussi, pourquoi est-ce que si j'ajoute un chemin d'accès à mon passage, des configurations, il sera également ajouté à mon Debug configurations?
En mode debug, je veux dire que j'ai frappé F11 (équivalent à un clic sur le bug de l'icône dans la barre d'outils), et normalement par l'exécutant, je veux dire en appuyant sur Ctrl+F11 (équivalent à un clic sur le bouton de lecture vert dans la barre d'outil).
Mais avez-vous réellement obtenir à parcourir le programme?
Oui, si je n'ai pas ajouté la Cygwin chemin d'accès à mon passage, les configurations et la sortie de débogage est affiché, je peux parcourir le programme. Quand j'ai ajouter le chemin d'accès et je ne vois exécution normale de sortie et pas de sortie de débogage, de toute évidence, je ne peux pas parcourir le programme. Mais encore une fois, l'ajout de la cygwin chemin le chemin d'accès Windows, par opposition à la configuration d'exécution résout tous les problèmes.
Hmmm. Eh bien, si votre problème est résolu, alors que c'est grand. Je ne peux pas, pour la vie de moi, de comprendre ce qui peut provoquer le comportement que vous décrivez. Ajouter le chemin d'accès à la configuration d'exécution doit, de manière efficace, juste de l'ajouter à votre chemin d'accès Windows. Peut-être que c'est un bug et votre prochaine mise à jour ou installer la corriger. Bonne chance!
OriginalL'auteur gsingh2011 | 2012-03-02
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que je puisse répondre à tout, mais j'utilise exactement le même set-up que vous et j'ai eu à traiter avec un certain nombre de problèmes comme ça (je me demandais si vous aviez des difficultés à jongler à l'aide de la 32-bit/64-bit JVM et la navigation sur Internet)!
Cygwin/bin chemin d'accès doit être spécifiée, car c'est là que gcc, gdb et tous les autres outils cygwin et des dlls (je vais supposer que vous êtes en utilisant cygwin saveur de gcc plutôt que MinGW saveur). Je crois que vous devez le spécifier dans l'environnement Windows (à l'aide d'un fichier win32 chemin) parce que Eclipse est en cours d'exécution à l'aide de la JVM Windows et traite donc win32 chemins. Par conséquent, il n'est pas question que
cygwin/bin
est ajouté à laPATH
variable dans l'environnement cygwin. Le CDT est à la recherche pour cygwin à l'aide d'Eclipse et Eclipse a besoin de trouver cygwin1.dll à partir de Windows.Je suis peut-être totalement faux, mais si je devais deviner, je dirais que vous devez faire absolument certain que vous avez correctement défini les
PATH
variable d'environnement correctement pour les deux configurations.Une chose à noter est que, dans Eclipse, il est pas de différence entre une configuration qui apparaît dans la Debug Configurations fenêtre et l'autre avec le même nom dans le Exécuter les Configurations fenêtre. La seule différence entre les deux fenêtres de l'est que l'on va exécuter le programme sans l'aide d'un débogueur et dispose d'onglets pour le réglage des paramètres de débogage. Par conséquent, il n'est donc pas surprenant que le fait de changer les paramètres vont influencer les autres.
Comme vous le savez peut-être, pour de nombreux projets, le système de construction est mis en place pour produire deux (parfois plus) ensembles de fichiers binaires: l'un avec les informations de débogage/(symboles de DÉBOGAGE) et l'autre sans (LIBÉRATION). Dans ce cas, vous avez normalement deux configurations dans Eclipse: un pour exécuter le DÉBOGAGE binaire et un pour exécuter la VERSION binaire. Deux de ceux-ci apparaissent dans les deux Debug Configurations fenêtre et dans les Exécuter les Configurations fenêtre. Le point est que vous pouvez exécuter le DÉBOGAGE avec ou sans gdb, mais ne peuvent pas être utilisés par gdb.
Cela dit, je ne suis pas sûr pourquoi ajouter le chemin d'accès correct à la configuration d'exécution pourrait arrêter le DÉBOGAGE de code binaire à partir de la sortie de la console. Je soupçonne que quelque chose d'autre se passe ici, peut-être un problème de concordance des informations de débogage et de débogueur.
Pour (espérons-le) de répondre à votre question de savoir comment obtenir les deux configurations de travail, allez à l'ensemble du porc et ajoutez simplement
C:\cygwin\bin;
de la WindowsPATH
variable d'environnement. Je devine qui permettra à la fois de travail. Je vais supposer que vous savez comment le faire, mais s'il vous plaît poster un commentaire si pas.Autre chose à faire serait de compiler et d'exécuter le programme à partir d'un shell cygwin. Si ça fonctionne c'est probablement un coffre-fort à parier que votre
PATH
variable d'environnement n'est pas définie correctement lors de l'utilisation d'eclipse.Espère que ça aide!
Tout d'abord votre solution simplement en ajoutant de l'C:\cygwin\bin chemin le chemin d'accès Windows travaillé. Deuxièmement, eclipse continue à me confondre. J'étais en ajoutant à l'run/debug configurations, mais de l'ajouter à l'une était en fait de l'ajouter à la fois. J'ai regardé dans mes préférences de projet et il y avait une variable de CHEMIN d'accès défini il y a déjà eu la cygwin chemin... Donc en bref, bien que rien dans l'éclipse du sens, ta solution a fonctionné.
Les deux paragraphes sur la définition du projet
PATH
variable ont été fait hors de propos. Je me rends compte maintenant que le chemin d'accès défini sur le C/C++ build-> la page n'est pas pertinent à ce problème, comme (un peu évidemment) ce chemin est utilisé lors de la compilation/build-temps seulement. Tant que votre programme s'appuie correctement, la modification de ce paramètre ne devrait pas affecter l'exécution. J'ai mis à jour ma réponse en conséquence.Content d'avoir pu aider! Si la définition de la cygwin/bin chemin dans le path de Windows travaillé, alors le problème est évidemment de pointage de l'Éclipse à l'emplacement correct. Toutefois, Vous devriez être en mesure de reproduire ce résultat à l'aide d'Eclipse, sans modifier le chemin d'accès windows. J'ai révisé ma réponse, nous l'espérons faire la lumière sur ce qui pourrait se passer.
Dans le "Pour ce que ça vaut" catégorie, Eclipse dispose de son propre ensemble de variables d'environnement dans le Run/Debug configurations. Alors que c'est "utile" en isolant l'éclipse des variables d'environnement de votre environnement natif variables (c'est à dire empêcher les avoir saboté crucial natif env. vars), il n'était pas utile (ou intuitive) dans l'obtention de stdout imprimé à l'éclipse de la console. Une bonne recommandation pour l'éclipse responsables serait d'ajouter une case à cocher pour l'exécution des configurations d'avoir Eclipse importer automatiquement le natif de variables d'environnement.
OriginalL'auteur Mike G
De wiki eclipse:
Dans Eclipse CDT sur Windows, sortie standard du programme en cours d'exécution ou de débogage est entièrement mis en mémoire tampon, car il n'est pas connecté à une console Windows, mais à un tuyau. Voir bug 173732 pour plus de détails. Ajouter des appels de vidage après chaque printf ou ajouter les lignes suivantes au début de la fonction principale:
OriginalL'auteur infoartenovo
Ajouter le Chemin d'accès est correct avant de gdb 7.3. Maintenant, quand je ajouter le chemin d'accès je ne peux plus utiliser les points d'arrêt qu'il ne peut pas trouver les fichiers dll comme ils ne font plus partie du chemin d'accès. Pour y remédier, vous pouvez facilement ajouter le chemin d'accès complet de l'environnement en suivant ces instructions.
Vous pouvez voir la dll problème tel qu'il apparaît dans la console gdb
erreur,msg="Pendant le démarrage du programme terminé avec le code 0xc00000be."
ou
erreur,msg="Pendant le démarrage du programme terminé avec le code 0x00000135."
et vous pouvez obtenir une erreur de la fenêtre pop-up disant qu'il ne pouvait pas effacer le point d'arrêt
Path
cas de questions où j'ai mis à jour le chemin d'accès d'environnement commec:\cygwin\bin;${env_var:Path}
OriginalL'auteur Richard
Vous devez configurer l'éditeur de liens
J'utilise MinGW.
Suivez les étapes ci-dessous.
OriginalL'auteur Dhiral Pandya
Ne pas déboguer ou d'exécuter des applications C ou C++ à partir de l'intérieur de l'Éclipse si ils ciblent Cygwin. Les SAVOIRS traditionnels lien vers "tu vas passer un mauvais moment" mème.
Il y a des problèmes avec Cygwin stdout/stderr qui n'apparaissent pas si vous exécutez le programme à partir de la normale de la console Cygwin (où vous aimeriez être en cours d'exécution bash), mais ils ne présentent à peu près tous les autres vous pouvez les exécuter.
La façon normale d'exécution des programmes d'autres programmes sous Linux et d'autres posix des environnements favorables à la est de rediriger les e/s vers un pty. Cygwin peut pas soutenir pty 100% dans Windows.
Certains de ces problèmes peuvent être atténués par la setvbuf appels dans @infoartenovo de réponse.
Un autre aspect de ce problème est que les applications écrites pour l'utilisation de Windows Console API ne fonctionne pas bien dans pty-s.
Nous sommes tous les dommages collatéraux d'une guerre impossible à gagner.
http://cygwin.com/ml/cygwin/2011-12/msg00236.html
https://code.google.com/p/mintty/issues/detail?id=56
OriginalL'auteur cardiff space man