在发布模式下调试shell扩展

Debugging a shell extension in release mode

本文关键字:调试 shell 扩展 模式 布模式      更新时间:2023-10-16

我有一个在发布模式下构建的shell扩展,我还生成调试符号和.pdb文件。我将构建上下文菜单扩展.dll文件的visual studio程序附加到正在运行的explorer.exe进程,当程序附加到explorer进程事件时,我可以在输出窗口中看到,如下所示:

'explorer.exe': Unloaded 'C:WindowsSystem32mydocs.dll'
'explorer.exe': Unloaded 'C:WindowsSystem32sendmail.dll'
'explorer.exe': Unloaded 'C:WindowsSystem32zipfldr.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类的类)。当我右键单击文件时,右键单击菜单会使用自定义上下文菜单进行初始化并执行所需的操作,但不会涉及断点命中!!我想知道如何调试,因为我正在尝试注册回收站的上下文菜单,但它不起作用,我想看看代码发生了什么。在回收站注册的代码可以在以下帖子中找到:回收站注册

尝试使用regsvr32手动注册调试构建,例如

regsvr32 mydocs.dll

您可能必须关闭Explorer才能让它识别注册表更改。

如果这不起作用,您可以尝试在扩展中弹出一个消息框,看看这是否会使Explorer停止足够长的时间,以便调试到扩展中。