在发布模式下调试shell扩展
Debugging a shell extension in release mode
我有一个在发布模式下构建的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停止足够长的时间,以便调试到扩展中。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 如何通过cpp程序运行shell脚本
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 在linux上调试巨大的C++项目
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 正在VS调试器中监视映射条目
- 使用调试/崩溃报告将应用程序部署到客户端
- VC++本机单元测试,找不到调试符号
- shell排序中的交换和比较
- 如何在C++生成器中禁用"使用调试.dcus"
- 使用vscode调试时,GDB意外退出
- 即使使用调试编译标志,表达式也是"optimized out"
- 调试 CUDA MMU 故障
- 小字符串优化(调试与发布模式)
- 调试和自由执行中的信号处理
- 调试编译的服务器在数据库打开时崩溃
- Visual Studio 调试优化如何工作?
- 如何配置Visual Studio Code以使用cygwin,cmake和gcc进行调试
- 在发布模式下调试shell扩展