c++ - 在 VS2017 中搜索内存

标签 c++ memory visual-studio-2017 visual-studio-debugging postmortem-debugging

我在 Visual Studio 2017 中打开了我的 C++ 应用程序的 minidump 文件。转储文件是程序因访问冲突而崩溃。我怀疑堆/堆栈损坏,所以我在内存/反汇编窗口中花费了大量时间,试图解释堆栈。

如果我可以在内存中搜索某个值(例如函数调用的返回地址),那将非常方便。我知道 WinDbg 可以做到,但它目前没有正确设置符号路径,我宁愿留在一个调试器中。

我找到了 this link表示 Visual Studio 2010 支持键入类似 .S -D 0x20B4EC L100 0x12EC9275 的内容在即时窗口中,但是当我在 VS2017 中尝试时,我只得到 expected an expression .

我错过了什么吗?

(注意,虽然我现在正在分析故障转储,但在调试实时程序时它似乎也不起作用)

澄清

  • 我有一个包含内存的小型转储
  • 常规分析工作正常:我有 pdb 文件,我可以看到线程、堆栈、 watch ,随你怎么说。只是我怀疑stack corruption ,所以那些没有多大意义。 (要么,要么优化器惹我)
  • 因此,我打开了内存窗口(单击 Debug->Windows->Memory->Memory 1)。在那里,我可以看到(原始)内存。现在,我想在该内存中搜索特定值。
  • 最佳答案

    这是一个很好的教程:
    https://docs.microsoft.com/en-us/visualstudio/debugger/using-dump-files?view=vs-2019

    基本上,查看转储中的内存有一些硬性要求:

  • minidump 必须与堆
  • 您必须为 Visual Studio 提供 .exe 及其 .pdb

  • 如果不满足这些要求,您将仅获得堆栈跟踪,也许还有一些堆栈变量。

    编辑:带有监视和变量的堆栈跟踪与您要搜索的内存相同。没有实时调试。这是崩溃的快照。

    关于c++ - 在 VS2017 中搜索内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691123/

    相关文章:

    非模板类中任意类型的C++成员变量

    java - 在 SPOJ 中获得 1341M?

    python - 循环访问由 npy memmap 文件组成的 Dask 数组会增加 RAM,但不会释放它

    windows-installer - 如何从 MSI 安装 Visual Studio 2017 扩展 (VSIX)

    asp.net-core - .NET Core 控制台应用程序未创建 EXE 文件

    asp.net-mvc - NuGet:调用 COM 组件返回了错误 HRESULT E_FAIL

    c++ - 类范围内的变量模板

    c++ - 在 C++ 中使用大括号分隔代码

    c++ - 类析构函数的实际应用

    c++ - 在不损失 C++ 速度的情况下改进元组映射的内存消耗