调试小型转储期间未找到源页面

问题描述

我正在 VS2017 中开发 C++ 程序并希望修复我的客户面临的所有错误。我已经使用 this 文章设置了小型转储收集。为了测试此功能,我在代码中创建了内存访问冲突错误,启动程序,等待崩溃并在 VS 中打开转储文件。我想要的只是查看发生内存访问冲突的行号。

当我在我的机器(即构建 exe 的机器)上执行描述的操作时,一切正常,我可以看到带有错误的代码行。

但是当另一台 PC 发生崩溃时,转储不会显示行号。相反,VS 向我显示“找不到源”页面。

当然,我用 pdb 文件构建了 exe 并按照 here 的描述配置了 VS,所以我的 exe 符号被加载。我还在解决方案属性对话框中提供了包含源文件的文件夹。

我完全不明白这个问题的原因。问题可能出在 Windows 版本中吗?我正在 Windows 7 中开发,而另一台电脑有 Windows 10。

当我查看堆栈跟踪时,我看到了从 msvcp140.dll 调用某些内容后的差异。在我的 PC 转储中,msvcp140.dll 指的是 C:\Windows\SysWOW64\msvcp140.dll,但在另一台 PC 的转储中,它指的是 *C:\Windows\System32\msvcp140.dll。还有一个奇怪的 msvc_win.dll 库,它指的是 SymbolCache 文件夹。

我也尝试使用 WinDbg,结果相同:本地转储显示行号,而另一台 PC 的转储不显示。

在不同的 Windows 或/和 MS Visual C++ Redistributable 版本中似乎存在这个问题。因为如果我将 pdb 复制到另一台 PC 并使用 WinDbg 在那里调试转储,它会显示所有内容。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...