gpt4 book ai didi

c++ - 在 Release模式下调试 shell 扩展

转载 作者:可可西里 更新时间:2023-11-01 11:58:55 25 4
gpt4 key购买 nike

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

'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

最佳答案

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

regsvr32 mydocs.dll

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

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

关于c++ - 在 Release模式下调试 shell 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12144692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com