码迷,mamicode.com
首页 > 系统相关 > 详细

Vs2013在Linux开发中的应用(33):反汇编

时间:2015-01-08 21:39:47      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:vs2013   linux   msbuild   velt   

快乐虾

http://blog.csdn.net/lights_joy/

欢迎转载,但请保留作者信息


1.1    失败

按照文档的说法,反汇编应当实现IDebugDisassemblyStream2接口,然后在


        // The debugger calls this when it needs to obtain the IDebugDisassemblyStream2 for a particular code-context.
        // The sample engine does not support dissassembly so it returns E_NOTIMPL
        public int GetDisassemblyStream(enum_DISASSEMBLY_STREAM_SCOPE dwScope, IDebugCodeContext2 codeContext, out IDebugDisassemblyStream2 disassemblyStream)

中返回给SDM,很遗憾,搞了两天,还是这样:

技术分享

失败。


1.2    得来全不费工夫

DebugEngine要求实现的接口都查了一遍,还是不得要领,差点就想放弃这个功能了,准备做模板和安装,结果在查看注册表的时候发现了一个有意思的值:

技术分享


注意上面的Disassembly键,莫非机关就在这里?

不管,先试一把,在我们的接口注册项中也加上这个值,然后神奇的事情就发生了:

技术分享


加上IDebugDisassemblyStream2接口的实现,一番折腾,搞定:

技术分享


不过很奇怪的是选项中的显示源代码这一项无论如何都不起作用。按照文档的描述和正常的猜想,在反汇编时,SDM将调用


        public int Read(uint dwInstructions, enum_DISASSEMBLY_STREAM_FIELDS dwFields, out uint pdwInstructionsRead, DisassemblyData[] prgDisassembly)

通过dwFields应该能够得到是否显示源代码的选项的,但实际上这个值一直是不变的!

先就这样吧!





??

Vs2013在Linux开发中的应用(33):反汇编

标签:vs2013   linux   msbuild   velt   

原文地址:http://blog.csdn.net/lights_joy/article/details/42530585

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!