Récemment Nous avons eu un problème de production avec l'application gelée, nous avons essayé de percer et analyser le fichier de vidage, malheureusement la pile d'appel pour le fichier de vidage ne semble pas bonne et difficile à trouver la cause du gel.Pourquoi parfois la pile d'appels dans un fichier de vidage ne semble pas correcte?
Répondre
Si l'application s'est bloquée plutôt que s'est bloquée, essayez de charger dans windbg et exécutez !analyze -v -hang
ou essayez d'utiliser adplus en mode de blocage. Cela tente de déterminer la cause du blocage qui devrait vous donner une pile d'appel plus significative. La commande !locks
peut également être utile si vous avez un blocage en vous montrant ce qui bloque une ressource.
Deux raisons pour lesquelles une pile d'appel peut sembler incorrect:
La pile peut être endommagé. Si la pile a été corrompue pour une raison quelconque (par exemple, en raison d'un débordement d'un tampon qui a été alloué sur la pile), toutes les trames de pile sont détruites. Cela rend impossible le calcul de la liste des appelants.
Les symboles que vous utilisez (le cas échéant) peuvent ne pas convenir au binaire qui s'est écrasé. Vous devez utiliser exactement les mêmes symboles que ceux utilisés lors de la compilation du binaire. Une légère modification du code source peut rendre tous les symboles invalides.
Les symboles doivent correspondre au binaire. probablement la pile était corrompue. – user397954
Si vous appelez dans l'API Windows de qui appellent alors de nouveau dans vous sur le même fil (via les gestionnaires de messages Windows, par exemple), il est pas rare que les opérations pour utiliser les conventions de la pile de la DLL de Windows que le débogueur ne peut pas interpréter. Il n'est pas nécessaire que la pile soit traçable tout le temps lors de l'exécution d'une fonction/méthode c/C++, les registres liés à la pile peuvent être réutilisés à d'autres fins et les emplacements standard d'informations de pile peuvent être ignorés. Je vois ça beaucoup dans Windows.
- 1. La déclaration P/Invoke ne semble pas correcte
- 2. .click ne semble pas tirer ... pourquoi?
- 3. Io opérateurs, ne semble pas les créer dans un fichier
- 4. Pourquoi l'assemblage ne me semble pas cohérent?
- 5. XSLT fonctionne parfois, ne parfois pas - confondre
- 6. Parfois, le journal n'écrit pas dans le fichier journal et, parfois, ne l'affiche pas
- 7. Le vidage du noyau n'est pas synchronisé avec la trace de la pile gdb
- 8. Pourquoi Go ne semble-t-il pas reconnaître size_t dans un fichier d'en-tête C?
- 9. Changement du curseur dans WPF fonctionne parfois, ne parfois pas
- 10. Pourquoi la lecture de/proc/cpuinfo semble ne pas avancer la position du fichier?
- 11. pourquoi assert_equal() dans Ruby on Rails semble parfois comparer par Identité et parfois par valeur?
- 12. Pourquoi ce code ne produit-il pas la sortie correcte?
- 13. Pourquoi la sortie de ma réponse StreamWriter produit-elle des accents de vidage dans Excel mais semble correcte dans le Bloc-notes?
- 14. Pourquoi $ Id $ n'est parfois pas développé dans SVN?
- 15. TreeNodeCollection.Find ne semble pas fonctionner
- 16. Pourquoi CORS ne semble-t-il pas fonctionner avec POST?
- 17. jquery événement de charge parfois ne fonctionne pas, pourquoi?
- 18. Aide pour le vidage de la pile du serveur SQL
- 19. Pourquoi mon TTTableViewController ne semble
- 20. UIWebView ne semble pas charger la page
- 21. IE6 ne charge parfois pas la feuille de style
- 22. Vidage du fichier dans un fichier séparé avec tomcat?
- 23. La session semble ne pas fonctionner asp.net
- 24. Pourquoi est-bash parfois pas de sortie au ras d'un programme python dans un fichier
- 25. Lire un document PDF avec iText ne fonctionne pas parfois
- 26. Définir la taille de la pile dans un fichier makefile?
- 27. Le sélecteur jquery ne répond parfois pas
- 28. git revert merge - aucune ligne principale ne semble correcte
- 29. La propriété EnforceConstraints ne semble pas fonctionner?
- 30. L'objet SWF ne semble pas fonctionner dans un article Blogger
Merci, je peux essayer ces commandes en environnement de semi-production si je peux le reproduire. Pour la production, les techniciens n'ont pas le temps d'attendre pour que nous puissions le déboguer. – user397954