【问题标题】:Problem starting debug build on Windows Server 2008R2在 Windows Server 2008R2 上启动调试版本时出现问题
【发布时间】:2010-09-08 18:44:12
【问题描述】:

我有一个使用 VS2008 用 C++ 编写的 Windows 服务。我现在想在我的 Windows Server 2008R2 上远程调试该服务。但是当我启动服务时,我收到一个应用程序错误消息:

错误应用程序名称:MyService.exe,版本:1.99.96.0,时间戳:0x4c87cf49 错误模块名称:MSVCR90.dll,版本:9.0.30729.4926,时间戳:0x4a1743c1 异常代码:0xc0000417 故障偏移量:0x0006c955 故障进程ID: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 的调试版本,所以我认为这可能是问题所在。也许是缺少符号?

有人有想法吗?我有点绝望,因为我真的需要调试我的服务以检查严重错误。

您好, 西蒙

【问题讨论】:

标签: c++ visual-studio-2008


【解决方案1】:
// MessageText:
//
// An invalid parameter was passed to a C runtime function.
//
#define STATUS_INVALID_CRUNTIME_PARAMETER ((NTSTATUS)0xC0000417L)

这与 CRT 部署无关,尽管您部署了调试版本很神秘。代码只是因为 _invalid_parameter() 函数引发的运行时错误而崩溃。当 CRT 函数检测到其参数之一存在严重问题时调用它。

在发布版本中没有发生这种情况并不令人安慰,调试版本特别容易导致此类错误,因此您不会在发布版本中遇到偶尔的问题em> 崩溃。

你需要一个调试器,它会在它开始前自动中断。

【讨论】:

  • 好的,我知道了,非常感谢。我的应用程序在访问 log4cxx.dll 时崩溃了,我忘记部署它的调试版本。不幸的是,该应用程序启动时没有抱怨缺少调试 dll...
猜你喜欢
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多