StN*_*lay 29 memory debugging window visual-studio
是否有可能在任何二进制文件中保存一些缓冲区,以便在独立的十六进制编辑器中查看.
例如,我可以将数据从VS中的内存窗口保存到十六进制转储,但不能保存为ASCII吗?
user142207在调查VS内部方面做得很好,我建议解决方案.我的另一种方式是由我的同事Sergey S.发明的,这非常有用:
Windows:使用几个函数ReadProcessMemory/ WriteProcessMemory.它需要一个独立的应用程序,使用目标进程ID调用这些函数,如:
dumper.exe <debugged process id> <memory_start_addr> <memory_length>
Run Code Online (Sandbox Code Playgroud)
可以在VS调试会话期间直接调用此应用程序(与Linux相比,它没有这种可能性).我们可以在监视窗口中捕获内存地址,然后将地址传递给转储器并瞧.正如user142207在他的文章中所说,它在长时间重新编译的项目中非常有用.
Linux/MacOS有不同的方法.例如:从gdb控制台,使用命令dump memory.此命令也可以在调试会话期间直接使用.
有一个扩展:https://marketplace.visualstudio.com/items?itemName=OvidiuIonescu.VSDebugTool。它在 VisualStudio 窗口中打开其控制台,并允许将内存转储到文件和一些其他内存操作(在控制台中输入“help”以获取详细信息)。
此外,一些十六进制编辑器(例如Hex Editor Neo)可以像普通文件一样浏览进程内存。也许您也会找到具有此功能的免费编辑器。
小智 5
StNickolay 的答案引用了一些名为“dumper”的工具,但不知何故,我无法在网上找到它(而且,user142207 早已不复存在)。所以我创建了相同的工具——它打开正在运行的进程(即使附加了调试器)并将其内存的一部分复制到文件中。当您想为以后存储一些结构并且不想为 VS 内存视图“复制”输出而烦恼时,这非常有用。享受!
https://github.com/Alexx999/Dumper
| 归档时间: |
|
| 查看次数: |
11312 次 |
| 最近记录: |