在发布模式下调试shell扩展

时间:2012-08-27 15:10:39

标签: c++ windows visual-c++ mfc windows-shell

我有一个我在发布模式下构建的shell扩展,我还生成调试符号和.pdb文件。我将可视化工作室程序附加到正在运行的explorer.exe进程的上下文菜单扩展名.dll文件,我可以在输出窗口中看到程序附加了资源管理器进程事件,如下所示:

'explorer.exe': Unloaded 'C:\Windows\System32\mydocs.dll'
'explorer.exe': Unloaded 'C:\Windows\System32\sendmail.dll'
'explorer.exe': Unloaded 'C:\Windows\System32\zipfldr.dll'
The thread 'Win32 Thread' (0x16d8) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1650) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1070) has exited with code 0 (0x0).

但它永远不会到达我在函数Initialize中设置的断点(形成继承并实现IshellExtInit类的类)。当我右键单击文件时,右键单击菜单会使用自定义上下文菜单进行初始化并执行所需的操作,但不会涉及到断点! 我想知道如何进行调试,因为我试图注册回收站的上下文菜单而且它不起作用,我想看看代码发生了什么。 可以在此帖子中找到注册回收站的代码: recycle bin registration

1 个答案:

答案 0 :(得分:2)

尝试使用regsvr32手动注册调试版本,例如

regsvr32 mydocs.dll

您可能必须杀死资源管理器才能识别注册表更改。

如果这不起作用,您可以尝试在扩展程序中抛出一个消息框,看看是否会停止资源管理器足够长的时间来调试您的扩展程序。