我确实环顾了这里和谷歌,但我可能忽略了现有的问题答案,如果我错过了,请指出我的方向。
我有一个基于Windows的类似调试器的程序,没有代码视图,我试图添加一些功能。它不起作用,我不能为我的生活弄清楚如何调试它
这种调试器的工作方式是将DLL注入调试过程,以获取有关在Windows API中进行的各种调用的信息,并替换其他调用。我添加(破坏)代码是为了这个DLL
我所看到的只是该进程使用了100%的CPU内核,并且DLL中的DllMain
似乎永远不会被调用,我可以从LOAD_DLL_DEBUG_EVENT
看到该进程加载了DLL。 / p>
对于开发环境,我有Visual Studio 2013,不幸的是,此时更新到2015不是一个选项。
由于此应用程序本身就是一个调试器(它使用DEBUG_PROCESS等生成进程),看起来我不能简单地将Visual Studio调试器附加到该进程。它将被拒绝,因为“无法附加到进程。已经附加了调试器。” 我还测试过只在DLL源代码中设置了一个断点,但是Visual Studio表示断点永远不会因为没有加载文档的符号而被命中。检查模块和进程视图时,调试器永远不会意识到DLL和子进程的存在。
我遇到了这个Visual Studio扩展,不幸的是,它没有解决我的问题:
http://blogs.msdn.com/b/visualstudioalm/archive/2014/11/24/introducing-the-child-process-debugging-power-tool.aspx
我尝试用一个DllMain
调用来替换整个OutputDebugString
逻辑,这个字符串永远不会被调试器拾取。这就是让我觉得永远不会调用DllMain
的原因
正常启动过程,或在调试器中启动(没有我的更改)工作正常。
这导致了一个问题:如何将调试器,任何具有pdb支持的调试器连接到调试器,以便我可以查看在调试器生成的子进程的注入DLL中执行的代码 - 就像在调试器中一样?
我希望我能以清晰的方式解决问题,如果我没有,请指出不清楚的地方,我会尝试将这些部分弄清楚。
非常感谢您的帮助!