c – 如何从Visual Studio调试器执行所有进程内存的高级搜索?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c – 如何从Visual Studio调试器执行所有进程内存的高级搜索?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1569字,纯文字阅读大概需要3分钟。
内容图文
我是一个大型商业程序的开发人员,我正在尝试追踪特定的C内存泄漏.我想使用Visual Studio搜索我的进程的整个有效地址空间,但我无法看到如何有效地执行此搜索.
我知道.s命令文档here,但它没有做我需要的.例如,我100%确定地址0xfdfd240包含值0x0f0e34a8.我可以成功使用.s命令在这个地址附近搜索,如下所示:
.s -d 0x0fdfd200 L256000000 0x0f0e34a8
Found match at
0xfdfd240
但是我的程序已经做了很多小的分配,这给我留下了许多小的非连续的内存部分.如果我备份几千字节,搜索命令将失败:
.s -d 0x0fd00000 L256000000 0x0f0e34a8
Memory location could not be read. Please specify a valid memory location.
并且看起来搜索命令在找到它的第一个坏地址时不会再尝试向前搜索,即使有超出它的有效地址也是如此.
.s -d 0x0f000000 L256000000 0x0f0e34a8
No match was found
我隐约知道有一种方法可以询问windows什么内存范围对于给定进程有效,所以我正在考虑编写一个小的一次性程序来获取该信息,然后自动执行一系列搜索命令到立即窗口. ..但似乎有人必须先处理过这个问题,而且必须做得更聪明.
此外,我可以提取正在运行的进程的转储文件,因此如果任何人都可以推荐第三方工具来提供转储,那么具有更强大的搜索功能也应该可以解决.
有什么建议?
编辑:我在VS2008SP1和VS2010SP1中看到此行为.
解决方法:
在进行简单调试之外的任何事情时,我发现WinDbg(Windows调试工具的一部分)通常具有更好的功能.
而且你甚至不必从WinDbg进行所有调试.如果你在VS做你的事情,然后想要搜索内存(或做其他在VS中不容易的事情),请转到Debug – > Save Dump As …确保选择“Minidump with Heap”文件类型.
这将创建进程的完整快照文件.将其加载到WinDbg中,现在您可以使用一些很酷的命令.为了便于访问文档,您始终可以在命令窗口中键入“.hh”.所有命令都列在调试器下 – >调试器参考 – >调试器命令.
你想要的是s(搜索记忆)
内容总结
以上是互联网集市为您收集整理的c – 如何从Visual Studio调试器执行所有进程内存的高级搜索?全部内容,希望文章能够帮你解决c – 如何从Visual Studio调试器执行所有进程内存的高级搜索?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。