在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_跡象 –