web-dev-qa-db-fra.com

Qu'est-ce qu'un code de sortie de thread?

Qu'est-ce qu'un code de sortie de thread dans la fenêtre de sortie lors du débogage? Quelles informations cela me donne? Est-ce en quelque sorte utile ou juste un truc interne qui ne devrait pas me déranger?

The thread 0x552c has exited with code 259 (0x103).
The thread 0x4440 has exited with code 0 (0x0).

Existe-t-il une sorte de liste de codes de sortie possibles avec leur signification?

110
Ondrej Janacek

Apparemment, apparemment, il n’ya apparemment pas beaucoup d’explications à ce sujet, mais les codes de sortie sont supposés être utilisés pour indiquer comment le fil est sorti, 0 signifie généralement qu’il est sorti en toute sécurité alors que tout le reste a tendance à le vouloir. n'est pas sorti comme prévu. Mais alors ce code de sortie peut être défini dans le code par vous-même pour complètement ignorer cela.

Le lien le plus proche que je pourrais trouver utile pour plus d’informations est this

Citation du lien ci-dessus:

Quelle que soit la méthode de sortie utilisée, le nombre entier renvoyé par votre processus ou votre processus doit être compris entre 0 et 255 (8 bits). Une valeur nulle indique un succès, tandis qu'une valeur non nulle indique un échec. Bien que vous puissiez essayer de renvoyer n'importe quelle valeur entière en tant que code de sortie, seul l'octet le plus bas de l'entier est renvoyé par votre processus ou votre processus en tant que partie d'un code de sortie. Les octets de poids fort sont utilisés par le système d’exploitation pour transmettre des informations spéciales sur le processus. Le code de sortie est très utile dans les programmes batch/Shell qui exécutent conditionnellement d'autres programmes en fonction du succès ou de l'échec de l'un d'entre eux.


De la documentation pour GetEXitCodeThread

Important La fonction GetExitCodeThread renvoie un code d'erreur valide défini par l'application uniquement après la fin du thread. Par conséquent, une application ne doit pas utiliser STILL_ACTIVE (259) comme code d'erreur. Si un thread retourne STILL_ACTIVE (259) en tant que code d'erreur, les applications qui testent cette valeur peuvent l'interpréter comme signifiant que le thread est toujours en cours d'exécution et continuer à tester la fin du thread une fois celui-ci terminé, ce qui pourrait mettre l'application dans une boucle infinie.


D'après ce que je comprends de tout cela, le code de sortie n'a pas beaucoup d'importance si vous utilisez des threads dans votre propre application pour votre propre application. L'exception à cette règle est peut-être si vous exécutez plusieurs threads en même temps qui ont une dépendance les uns par rapport aux autres. S'il est nécessaire qu'une source externe lise ce code d'erreur, vous pouvez le configurer pour que les autres applications connaissent le statut de votre thread.

97
Sayse

Comme Sayse l'a mentionné, le code de sortie 259 (0x103) a une signification particulière. Dans ce cas, le processus en cours de débogage est toujours en cours d'exécution.

Je l'ai souvent vu avec le débogage de services Web, car le fil continue de s'exécuter après l'exécution de chaque appel de service Web (car il écoute toujours pour les autres appels).

53
Kristian Williams

ce qui m’est arrivé c’est que j’ai plusieurs projets dans ma solution. Je voulais déboguer le projet 1, cependant, le projet 2 a été défini comme projet de départ par défaut. J'ai résolu ce problème en faisant un clic droit sur le projet et en sélectionnant "Définir en tant que projet de démarrage". Le débogage est alors suffisant. 

0
Feng Zhang