c++ - 在 VS2017 中搜索内存
问题描述
我在 Visual Studio 2017 中打开了我的 C++ 应用程序的 minidump 文件。该转储是一个因访问冲突而崩溃的程序。我怀疑堆/堆栈损坏,所以我在内存/反汇编窗口中花费了大量时间,试图解释堆栈。
如果我可以在内存中搜索某个值(例如函数调用的返回地址),那将非常方便。我知道 WinDbg 可以做到,但它目前没有正确设置符号路径,我宁愿留在一个调试器中。
我发现这个链接说 Visual Studio 2010 支持.S -D 0x20B4EC L100 0x12EC9275
在即时窗口中输入类似的内容,但是当我在 VS2017 中尝试时,我只是得到expected an expression
.
我错过了什么吗?
(注意,虽然我现在正在分析故障转储,但在调试实时程序时它似乎也不起作用)
澄清
- 我有一个包含内存的小型转储
- 常规分析工作正常:我有 pdb 文件,我可以看到线程、堆栈、手表,随你怎么说。只是我怀疑堆栈损坏,所以这些没有多大意义。(要么,要么优化器在惹我)
- 因此,我打开了内存窗口(单击 Debug->Windows->Memory->Memory 1)。在那里,我可以看到(原始)内存。现在,我想在该内存中搜索特定值。
解决方案
这是一个很好的教程: https ://docs.microsoft.com/en-us/visualstudio/debugger/using-dump-files?view=vs-2019
基本上,查看转储中的内存有一些硬性要求:
- minidump 必须带有堆
- 您必须为 Visual Studio 提供 .exe 及其 .pdb
如果不满足这些要求,您将仅获得堆栈跟踪,也许还有一些堆栈变量。
编辑:带有手表和变量的堆栈跟踪与您要搜索的内存相同。没有实时调试。这是崩溃的快照。
推荐阅读
- python - 如何从 setup.py 中读取来自 pyproject.toml 的项目依赖项,以避免在两个文件中重复信息?
- java - 在 android studio 上运行模拟器的问题/错误
- amazon-web-services - 如何获取 CloudFormation 堆栈下的资源总数?
- json - 在 Postgresql 中从 JSON 中获取数据
- python - Sympy Sum() 的问题
- javascript - 我不能用 javascript 复制文本
- vue.js - 无法在 vue.js 应用程序中播放 Mux 资产
- python - ecos和packages的pip安装错误
- python - 尝试在 python 3.8.3 中使用 smtplib 发送电子邮件时出错
- bash - 将 2 个 awk 或 sed 语句合并为一个并保存现有文件