Vs2013在Linux开发中的应用(31):内存块显示
来源:互联网 发布:ieee33节点数据 编辑:程序博客网 时间:2024/06/07 22:39
快乐虾
http://blog.csdn.net/lights_joy/
欢迎转载,但请保留作者信息
要实现内存块的显示,需要实现IDebugMemoryBytes2接口,类似这样的:
class AD7MemoryBytes : IDebugMemoryBytes2 { private AD7Engine _engine; public AD7Engine Engine { get { return _engine; } } public AD7MemoryBytes(AD7Engine engine) { _engine = engine; } public int GetSize(out ulong pqwSize) { throw new NotImplementedException(); } public int ReadAt(IDebugMemoryContext2 pStartContext, uint dwCount, byte[] rgbMemory, out uint pdwRead, ref uint pdwUnreadable) { AD7MemoryAddress addr = pStartContext as AD7MemoryAddress; pdwRead = dwCount; pdwUnreadable = 0; return Constants.S_OK; } public int WriteAt(IDebugMemoryContext2 pStartContext, uint dwCount, byte[] rgbMemory) { throw new NotImplementedException(); }
当VS显示内存窗口时,会调用:
// The memory bytes as represented by the IDebugMemoryBytes2 object is for the program's image in memory and not any memory // that was allocated when the program was executed. public int GetMemoryBytes(out IDebugMemoryBytes2 ppMemoryBytes) { ppMemoryBytes = new AD7MemoryBytes(this); return Constants.S_OK; }
这里仅仅实现了一个空接口,并没有实现内存实际值的刷新,但此时已经可以在IDE中看到这样的效果了:
在读取数据的接口中使用gdb的-data-read-memory实际读取数据并填充后就成了这样:
搞定!
0 0
- Vs2013在Linux开发中的应用(31):内存块显示
- Vs2013在Linux开发中的应用(22):模块加载
- Vs2013在Linux开发中的应用(23):信息输出
- Vs2013在Linux开发中的应用(24):触发断点
- Vs2013在Linux开发中的应用(25):曙光
- Vs2013在Linux开发中的应用(26):表达式计算
- Vs2013在Linux开发中的应用(27):线程列表
- Vs2013在Linux开发中的应用(29):寄存器信息
- Vs2013在Linux开发中的应用(30):程序中断
- Vs2013在Linux开发中的应用(32):文本可视化
- Vs2013在Linux开发中的应用(33):反汇编
- Vs2013在Linux开发中的应用(35):Telnet支持
- Vs2013在Linux开发中的应用(14): 远程调试设想
- Vs2013在Linux开发中的应用(17): 调试参数传递
- Vs2013在Linux开发中的应用(18): 应用程序调试方案
- Vs2013在Linux开发中的应用(19): 启动gdb
- Vs2013在Linux开发中的应用(20): 断点设置
- Vs2013在Linux开发中的应用(21): 线程创建
- Android fragment 重叠问题——通过hide,show方式导致的解决方法
- 不能在simulator运行
- C#多线程(二)
- 使用 Pandas 分析 Apache 日志
- 2013年度最强AngularJS资源合集
- Vs2013在Linux开发中的应用(31):内存块显示
- BZOJ 2597 WC2007 剪刀石头布 费用流
- JS调用image.width有时为空的解决方法
- 关于Rails性能调整
- android中View坐标学习
- 常用Linux命令(上)
- java——IO键盘输入
- uva11081(最长公共子序列)
- c++ lambda表达式