#c #process #winmain
Вопрос:
У нас есть набор модульных тестов для нашего приложения, разделенных на проекты и отдельные исполняемые файлы, которые являются частью нашей системы сборки. Один из исполняемых файлов начал зависать даже после завершения, что означает, что он удерживает некоторые из наших библиотек DLL и не позволяет другим процессам изменять их (подписывать и т. Д.). Когда я отлаживаю exe-файл, я вижу, что он выходит из WINAPI WinMain
метода, возвращая 0, затем приложение удаляется из раздела «Приложения» процессов в диспетчере задач и появляется в разделе «Фоновые процессы», а отладчик не закрывается. Я действительно не знаю, с чего начать с этого, но что может привести к зависанию процесса в процессах Windows, даже если функция WinMain успешно вернулась?
Комментарии:
1. Просто потому, что вы вернетесь из
WinMain
не значит, что весь процесс будет рядом, есть выход-время деструкторы (ввода д Альтор каждого статический экземпляр)WinMain
— это даже не первая функция, которая вызывается в главном потоке, этоWinMainCRTStartup
значение по умолчанию для каждого EXE-файл, который может сделать много инициализации, прежде чем вы введите первую строку кода. Пожалуйста, предоставьте дополнительную информацию, такую как исходный код, какой набор тестов вы используете, версия компилятора и т. Д. Существует так много способов, чтобы что-то подобное произошло…2. убедитесь, что сообщения Windows обрабатываются этим приложением, если в очереди событий процесса застряли данные, которые могут вызвать проблему.
3. Имеет ли он несколько потоков?
4. В отладчике посмотрите на потоки и посмотрите, что они делают.
5. «отладка exe» звучит не очень хорошо. сначала вам нужно скомпилировать отладочную версию.