如何找出应用程序崩溃的原因 - Win 10 LTSB

2022-01-12 00:00:00 windows crash c++

我有使用 VS 2017 15.7.4 构建的应用程序,它是 64 位命令行 C++ 应用程序.

I have application built with VS 2017 15.7.4, it is 64-bit command-line C++ app.

我已将其与所有依赖项 DLL 一起复制到装有 Windows 10 Enterprise 2016 LTSB 64 位(版本为 10.0.14393)的机器上.应用程序有效.

I have copied it with all dependency DLL's to machine with Windows 10 Enterprise 2016 LTSB 64bit (ver says Version 10.0.14393). Application works.

然后我将它复制到另一台具有相同版本 Windows 的机器上.它立即停止并显示消息停止工作.

Then I copied it to another machine with the same version of windows. There it stops right away with message stopped working.

找到原因,详情见评论

我试图解决的问题:

  • Visual Studio 2017 可再发行组件不会改变这种情况.
  • 事件日志中有一些崩溃事件,事件 1001:没有任何有用的信息,除了所有依赖模块 dll 已加载.
  • 事件 1000:无用
  • 事件 1005 有消息:

Windows 由于以下原因之一无法访问该文件:网络连接有问题,该文件的磁盘存储在此计算机上,或安装在此计算机上的存储驱动程序;或者磁盘丢失.Windows 关闭了 my_program.exe 程序,因为这个错误.

Windows cannot access the file for one of the following reasons: there is a problem with the network connection, the disk that the file is stored on, or the storage drivers installed on this computer; or the disk is missing. Windows closed the program my_program.exe because of this error.

程序:my_program.exe 文件:

Program: my_program.exe File:

错误值列在附加数据部分.用户操作

The error value is listed in the Additional Data section. User Action

  1. 再次打开文件.这种情况可能是暂时的问题,当程序再次运行时会自行纠正.
  2. 如果文件仍然无法访问并且
    • 它在网络上,您的网络管理员应该验证网络没有问题并且服务器可以已联系.
    • 它位于可移动磁盘上,例如软盘或 CD-ROM,请确认该磁盘已完全插入计算机.

附加数据错误值:00000000 磁盘类型:0

Additional Data Error value: 00000000 Disk type: 0

  • 我尝试在不同的机器上编译它,使用 VS 2017 15.8.4(不同于 15.7.4),然后二进制文件在目标机器上工作.不过,这不是解决方案,因为这台机器不用于夜间构建".
  • Depends 不会显示任何缺失的依赖项
  • 推荐答案

    正如评论者指出我找到答案的正确方法:事后调试 - 附加 WinDbg - 向我显示错误是非法指令",该指令也是vmovdqu",它是 AVX 指令.并且实用程序CoreInfo显示本机CPU不支持AVX指令.解决方法是在没有这个支持的情况下编译.

    As commenters pointed me to correct way of finding the answer: Postmortem debugging - attaching WinDbg - showed me that error was "Illegal instruction", also that instruction was "vmovdqu" which is AVX instruction. And utility CoreInfo shows that this machine CPU does not support AVX instructions. Solution is to compile without this support.

相关文章