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

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

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

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

3 ответов


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

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

цитата сверху ссылка:

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


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

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


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


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

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


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