在VS2017中搜索内存
Search through memory in VS2017
我在Visual Studio 2017中打开了C++应用程序的小型转储文件。转储是因访问冲突而崩溃的程序。我怀疑堆/堆栈损坏,所以我在内存/反汇编窗口中花费了大量时间,试图解释堆栈。
如果我可以在内存中搜索一些值(例如函数调用的返回地址(,那将非常方便。我知道 WinDbg 可以做到这一点,但它目前没有正确设置符号路径,我宁愿留在一个调试器中。
我发现这个链接说Visual Studio 2010支持在即时窗口中键入类似.S -D 0x20B4EC L100 0x12EC9275
的内容,但是当我在VS2017中尝试时,我只是expected an expression
。
我错过了什么吗?
(注意,虽然我现在正在分析崩溃转储,但在调试实时程序时它似乎也不起作用(
澄清
- 我有一个包含内存的小型转储
- 常规分析工作正常:我有 pdb 文件,我可以看到线程、堆栈、手表,应有尽有。只是我怀疑堆栈损坏,所以这些没有多大意义。(要么这样,要么优化器在惹我(
- 因此,我打开了内存窗口(单击调试->Windows->内存->内存 1(。在那里,我可以看到(原始(记忆。现在,我想在该内存中搜索特定值。
这是一个很好的教程: https://learn.microsoft.com/en-us/visualstudio/debugger/using-dump-files?view=vs-2019
基本上,查看转储中的内存有一些硬要求:
- 小型转储必须带有堆
- 你必须给Visual Studio.exe及其.pdb
如果不满足这些条件,则只会获得堆栈跟踪,也许还会获得一些堆栈变量。
编辑:包含监视和变量的堆栈跟踪与要搜索的内存相同。没有实时调试。这是崩溃的快照。
根据您发布的链接:"此选项仅对运行时模式下C++项目有效。
https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/ms171363(v=vs.100(
它不适用于故障转储(我在搜索如何做类似事情时发现了这一点(。听起来Windbg是唯一的方法。
- 我可以做些什么来提高内存搜索速度?
- 在VS2017中搜索内存
- 图上的深度优先搜索算法中的内存泄漏
- 搜索为什么不分配内存
- 内存连续性和搜索树
- 在另一个进程的内存中搜索字符串的每个匹配项
- 在内存中搜索字符串会导致崩溃
- 如何在另一个进程的内存中搜索字符串
- 我可以将可搜索字符设备“/dev/mem_8”映射到内存并使用x86_64指令访问它吗?
- 二进制搜索树(如何在插入时检查内存是否不足)
- 在内存块中搜索2个连续字符
- 为什么我在这里泄漏内存(深度优先搜索)c ++
- 在C++中使用带有二进制搜索的new动态内存分配
- 在大内存映射文件中搜索
- 如何在程序的内存中搜索图像/png/jpeg/任何其他类型并显示它
- 我如何在另一个进程的内存中通过正则表达式搜索字符串
- 如何在一个文件上执行二进制搜索,而不是在c++中一次将它全部读入内存
- 内存泄漏二叉搜索树
- 在大内存中搜索字符串.DMP文件
- 搜索进程内存