Existe-t-il un outil disponible pour tracer la communication entre les threads; 1. Exécution en un seul processus 2. Exécution dans différents processus (IPC)Communication de fil
Répondre
Je suppose que vous devez suivre ce processus pour le débogage. Dans des circonstances normales, il est difficile de le faire, sans code écrit personnalisé. Pour un problème similaire auquel j'ai été confronté, j'avais un tampon de suivi par processeur, qui enregistrait brièvement le temps et l'opération intéressante effectuée par le thread en cours d'exécution. Le journal était une trace circulaire qui permet de stocker des données comme suit:
struct trace_data {
int op;
void *data;
struct time t;
union {
struct {
int op1_field1;
int op1_field2;
} d1;
struct {
int op2_field1;
int op2_field2;
} d2
} u;
}
Le journal de trace est un ensemble de ces structures de longueur 1024, un pour chaque processeur. Chaque thread utilisé pour tracer les opérations, ainsi que le temps pour déterminer la causalité des événements. Les champs qui étaient utilisés pour stocker des données dans le "syndicat" dépendaient de l'opération en cours. La signification du pointeur "data" dépendait aussi de "op". Lorsque le programme venait à planter, j'ouvrais le noyau dans gdb et j'avais un script gdb qui parcourait les logs de chaque processeur et imprimait les ops et leurs données correspondantes, pour trouver l'historique des événements.
Pour différents processus, vous pouvez effectuer une journalisation de ce type dans un fichier à la place, une par processus. Cet exemple est en C, mais vous pouvez le faire dans la langue que vous voulez utiliser, tant que vous pouvez trouver l'ID du CPU sur lequel le thread est actuellement en cours d'exécution.
Vous recherchez peut-être quelque chose comme Intel Thread Checker tant que vous utilisez pthreads dans (1).
Pour la communication entre différents processus (2), vous pouvez utiliser la programmation orientée aspect (AOP) si vous avez le code source ou écrire votre propre wrapper pour les fonctions IPC et LD_PRELOAD
.
Modifier: Oups, vous avez dit suivi, pas vérification.
Cela dépendra beaucoup du système d'exploitation et de l'environnement de développement que vous utilisez. Si vous êtes avec Visual Studio, regardez les outils dans Visual Studio 2010.
- 1. C# WM6 Compact Framework Cross fil Problème de communication
- 2. Android - Communication de fil Inter et la prise réseau
- 3. Communication Bluetooth dans le fil ou le service sous Android?
- 4. Communication de thread Posix Linux
- 5. communication série twoway communication java
- 6. communication entre les threads en Java: l'arrêt d'un fil si un autre thread a terminé
- 7. Liens reg communication bases
- 8. Communication entre instances EJB3 (communication inter-bean Java EE) possible?
- 9. Protocole de communication aide
- 10. xmpp communication de groupe
- 11. Question de communication ViewModel
- 12. Communication de port série
- 13. problème de fil android
- 14. fil adresse de départ
- 15. C# fonctions de fil
- 16. Boost Synchronisation de fil
- 17. TCP socket communication
- 18. bug dans la communication de port série
- 19. ASP.NET AJAX Toolkit problèmes de communication
- 20. Communication ActiveX
- 21. Communication Bluetooth
- 22. Communication ARP
- 23. Communication interprocess
- 24. Communication croisée
- 25. Communication série
- 26. Communication GPRS
- 27. Recommandation de cadre de communication
- 28. question de suicide de fil
- 29. conception de réseau; communication socket avec
- 30. C# - Flux de texte en direct d'un fil à l'autre
Dans quel système d'exploitation? Quel langage de programmation? – Oded
et que voulez-vous dire par "communication"? –
partage de données par ex. – reonze