2010-09-08 3 views
0

У меня есть служба Windows, написанная на C++ с использованием VS2008. Теперь я хочу отлаживать эту услугу удаленно на моем Windows Server 2008R2. Но когда я начинаю службу я получаю сообщение об ошибке приложения, говоря:Проблема с запуском отладки на Windows Server 2008R2

Сбойного имя приложения: MyService.exe, версию: 1.99.96.0, штамп времени: 0x4c87cf49 Сбойного имя модуля: msvcr90.dll, версию: 9.0. 30729.4926, штамп времени: 0x4a1743c1 код исключения: 0xc0000417 Fault смещение: 0x0006c955 Сбойного идентификатора процесса: 0x1c08 Сбойного времени запуска приложение: 0x01cb4f7fd91b5804 Сбойного пути приложения: C: \ Services \ MyService.exe Сбойного пути модуля: C: \ Windows \ WinSxS \ x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4926_none_508ed732bcbc0e5a \ MSVCR90.dll Id: 171b562c -bb73-11df-81e0-003048788541

Когда я запускаю ту же службу в выпуске, все в порядке. Служба создается против Microsoft.VC90.CRT версии 9.0.21022.8, и у меня есть встроенный манифест.

Что я догадался до сих пор, так это то, что, поскольку у меня также установлен VS2010 на моей машине разработки, у меня есть 9.0.30729.4974 redist. И сервер W2k8 имеет установленный x.x.x.4926. Но на сервере нет отладочной версии x.x.x.4926, поэтому я думаю, что это может быть проблемой. Может быть, что-то про недостающие символы?

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

здоровается, Саймон

+0

Как вы и предполагали, вам потребуется отладочный CRT, установленный на компьютере, для запуска ваших двоичных файлов отладки. –

+0

Как указано в этом сообщении http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/4d710d89-de7f-4d1f-8148-0aee63bf396d, отладочная версия отсутствует. –

ответ

1
// MessageText: 
// 
// An invalid parameter was passed to a C runtime function. 
// 
#define STATUS_INVALID_CRUNTIME_PARAMETER ((NTSTATUS)0xC0000417L) 

Это не имеет ничего общего с размещением CRT, хотя это таинственное, что вы получили отладочную сборку развернутого. Код просто сбой при ошибке выполнения, вызванной функцией _invalid_parameter(). Вызывается, когда функция CRT обнаруживает критическую проблему с одним из своих аргументов.

Тот факт, что это не произойдет в сборке Release не утешит, то отладочных особенно заминирован, чтобы вызвать ошибки, как это так, у вас нет проблем с Выпуска построить что иногда аварии.

Вам понадобится отладчик, он автоматически разбивается непосредственно перед его запуском kaboom.

+0

Хорошо, я мог понять это, спасибо большое. Мое приложение разбилось при доступе к log4cxx.dll, и я забыл развернуть его отладочную версию. к сожалению, приложение начало без жалобы на отсутствующую dll debug ... –

Смежные вопросы