在Visual Studio中进行调试时,是否有任何方法可以查找指向特定地址的所有指针(如果已知它们位于当前范围内)?查找存储特定地址的所有指针
0
A
回答
1
对于VS2010,您可以使用宏。
- 打开宏窗口,点击“工具 - >宏 - >宏IDE”。
复制并粘贴下面的宏
Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports EnvDTE90a Imports EnvDTE100 Imports System.Diagnostics Public Module Module1 Sub DumpLocals() Dim outputWindow As EnvDTE.OutputWindow Dim address As String = "0x009efedc" outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Object Dim currentStackFrame As EnvDTE.StackFrame currentStackFrame = DTE.Debugger.CurrentStackFrame outputWindow.ActivePane.OutputString("*Dumping Local Variables*" + vbCrLf) For Each exp As EnvDTE.Expression In currentStackFrame.Locals If exp.Value = address Then outputWindow.ActivePane.OutputString("Match: " + exp.Name + " = " + exp.Value.ToString() + vbCrLf) End If Next End Sub End Module
- 设置在你的C++程序断点要列出指针。
- 运行你的C++程序。
- 当断点被击中时
- 回到宏窗口。
- 更改宏中地址变量的值。请注意,如果您不使用十六进制,则可能需要删除“0x”。
- 按下Ctrl + S保存宏。
- 仍然在宏窗口中,按F5运行宏。结果将在Output窗口中(Debug - > Windows - > Output)。 也许你甚至可以给宏添加参数并从立即窗口调用它。
P/S:此宏从http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-visual-studio-2010.aspx
1
错误修改,我对你的另一个更简单的解决方案。当你打断点:
- 打开本地窗口(调试 - > Windows - >本地)。
- 按Ctrl + A在本地窗口中选择所有内容。
- 按Ctrl + C复制
- 它们粘贴到Excel
- 排序在Excel中值列。
- 查找匹配的指针。
相关问题
- 1. 存储指针地址在malloced内存
- 2. 查找存储器地址
- 3. 存储在地址相对于指针
- 4. 存储指针地址和std :: adressof
- 5. 如何查找DLL中特定指令的内存地址
- 6. 冲突指针的地址,并存储在指针
- 7. 指针内存地址
- 8. 指向特定固定地址的指针
- 9. Mysql:查找引用特定表的所有存储过程
- 10. 如何存储指针指向的地址?
- 11. 将指针的内存地址存储为整数
- 12. 如何保存存储在指针中的实际地址
- 13. 存储一个指针的地址到内存
- 14. 指定节点的指针地址
- 15. 将null指定给指针的地址
- 16. 如何在C++中查找指向接口的指针地址?
- 17. 存储指向地图键的指针
- 18. 如何释放指向保存地址的指针的指针
- 19. 指针存储在指定字符串时的地址是什么?
- 20. 查找所有发布的比特币地址的网页(PHP)
- 21. C:甲指针的指针的地址,澄清所需
- 22. 查找所有指向gdb中地址的变量
- 23. 为什么指针不能存储另一个指针的地址?
- 24. 在SQL中查找特定地址
- 25. 未指定C指针地址更改
- 26. 指针不会返回指定地址
- 27. 内存和指针的C++地址
- 28. 操作系统如何在不检查所有指针地址的情况下确定空指针访问?
- 29. 指定另一个指针的地址指针
- 30. delphi指针地址
不知道,但一个稍微黑客的方法可能是删除指向的对象,看看程序落在哪里。这可能会给你一个粗略的指示。 –
@ dr.mo:你在开玩笑吧?免费后使用会导致失败出现在完全不相关的代码中。 –
这就是为什么我说它_might_给你一个_rough_迹象 –