2010-12-10 88 views
0

J'essaie de compiler une application assez volumineuse sous Solaris. La compilation sur AIX a causé un problème que le tampon de ligne de commande était trop petit (ARG_MAX).La création d'une grande application sous Solaris est suspendue sans aucune information

Sous Solaris, il compile la plupart des applications, mais il se bloque et, sans aucune erreur, il ne fait rien pendant au moins une heure. Je l'utilise sous SunOS 5.10 Sparc 32 bits.

Des idées sur la façon de découvrir ce qui se passe ou ce qui pourrait causer un tel comportement?

+0

Les défaillances AIX et SunOS étaient-elles au même endroit? Quelle application? – nmichaels

+0

En outre, quel compilateur/version utilisez-vous sur chaque plate-forme? – andand

+0

J'ai vu des cas où l'optimiseur "se bloque" sur certains fichiers. Vous pouvez essayer de désactiver l'optimisation pour le (s) fichier (s) source (s) problématique (s). – macgarden

Répondre

0

Juste pour ceux qui rencontrent cela à l'avenir. Le problème était que l'indicateur d'optimisation entraînait un temps TRÈS long à compiler. Je parle 1+ heure pour un fichier cpp.

Ceci est un gros projet. En outre, il y avait un problème avec Sys Admin sur SUN box ne me donne pas assez de partage de CPU. Augmentation qui a résolu ce problème, bien fait plus vite et dans des délais raisonnables.

J'espère que cela aide

0

Je ne peux pas dire si la compilation est suspendue, ou votre application elle-même.

Si l'application est suspendue, suivez simplement les étapes de débogage habituelles: exécutez-la dans votre débogueur et regardez quand elle meurt, ou ajoutez des instructions d'impression.

Si le compilateur meurt, est-il toujours mort sur le même fichier? Si vous compilez ce fichier par lui-même, est-il toujours bloqué? Si c'est le cas, essayez truss en utilisant le compilateur lorsque vous essayez de générer le fichier qui se bloque. Vous pouvez trouver qu'il bloque sur E/S en attente d'un fichier inexistant ou quelque chose de similaire.

+0

il ne meurt pas ..juste bloque ... et c'est pas son application sa compilation qui est suspendue .. et son faire sur le même fichier .. ce qui est truss jamais entendu parler – grobartn

0

ce que vous avez à faire est:

  1. Commentez ou supprimer 99% du code et la compilation que
  2. Ajouter environ 5% du code de retour et compilez que

    si la dernière chose que vous avez ajouté a causé l'heure peut accrocher le diviser

  3. Retour à l'étape 2