Что такое код выхода потока?

Что такое код выхода потока в окне вывода во время отладки? Какую информацию мне это дает? Это как-то полезно или просто внутренний материал, который не должен беспокоить меня?

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

Возможно ли какой-то список возможных кодов выхода вместе с его значением?

Ответ 1

На самом деле, похоже, не слишком много объяснений по этому вопросу, но коды выхода должны использоваться для указания того, как поток вышел, 0 имеет тенденцию означать, что он вышел безопасно, в то время как все иначе имеет тенденцию означать, что он не выходил, как ожидалось. Но тогда этот код выхода может быть установлен в коде самостоятельно, чтобы полностью игнорировать это.

Ближайшая ссылка, которую я нашел полезной для получения дополнительной информации, this

Цитата из ссылки выше:

Как бы то ни было, метод выхода, целое число, возвращаемое из вашего процесса или потока, должно быть значением от 0-255 (8 бит). Нулевое значение указывает на успех, в то время как ненулевое значение указывает на сбой. Хотя вы можете попытаться вернуть любое целочисленное значение в качестве кода выхода, из вашего процесса или потока возвращается только младший байт целого числа как часть кода выхода. Базы более высокого порядка используются операционной системой для передачи специальной информации о процессе. Код выхода очень полезен в программах пакетной/командной строки, которые условно выполняют другие программы в зависимости от успеха или отказа одного.


Из документации для GetEXitCodeThread

Важно. Функция GetExitCodeThread возвращает допустимый код ошибки, определенный приложением только после завершения потока. Поэтому приложение не должно использовать STILL_ACTIVE (259) в качестве кода ошибки. Если поток возвращает STILL_ACTIVE (259) как код ошибки, приложения, проверяющие это значение, могут интерпретировать его как означающее, что поток все еще работает и продолжает проверять завершение потока после потока завершено, что может привести приложение в бесконечный цикл.


Мое понимание всего этого заключается в том, что код выхода не имеет большого значения, если вы используете потоки в своем приложении для своего приложения. Исключение из этого возможно, если вы используете пару потоков одновременно, которые имеют зависимость друг от друга. Если для внешнего источника требуется требование прочитать этот код ошибки, вы можете настроить его, чтобы другие приложения знали статус вашего потока.

Ответ 2

Как сказал Сайз, код выхода 259 (0x103) имеет особое значение, в этом случае процесс, отлаживаемый, все еще запущен.

Я видел это много с отладкой веб-сервисов, потому что поток продолжает работать после выполнения каждого вызова веб-службы (поскольку он все еще прослушивает дальнейшие вызовы).

Ответ 3

Что со мной случилось, так это то, что у меня есть несколько проектов в моем решении. Я хотел отлаживать проект 1, однако проект 2 был установлен как начальный проект по умолчанию. Я исправил это, щелкнув правой кнопкой мыши по проекту и выбрав "Задать как проект запуска", а затем отладка выполняется нормально.