如何调试 Windows 搜索属性处理程序



我正在维护一个Windows Search属性处理程序项目,它由SearchFilterHost.exe加载。我不知道 SearchFilterHost.exe 什么时候启动,不知道命令行参数的用法,我发现 SearchFilterHost.exe 会在启动后一两分钟退出,所以很难使用调试器附加进程然后调试它加载的 DLL。

如何调试 Windows 搜索属性处理程序?

MSDN 中的调试协议处理程序讨论了如何执行此操作。 它涉及添加注册表项,以使 SearchIndexer 和 SearchFilterHost 更易于调试。您可能需要获得注册表分支的所有权才能更改值。只需执行第一组可能就足以让您能够直接附加到 SearchFilterHost。

HKEY_LOCAL_MACHINESOFTWAREMicrosoft
   Windows Search
      Gathering Manager
         DebugFilters = 1
         DisableBackOff = 1           may also be helpful
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion
   Image File Execution Options
      SearchIndexer.exe
         Debugger = <path to debugger> <debugger options> 
Example using the ntsd debugger  
Debugger = C:debuggersntsd.exe -odGx -c: "sxe ld mydll.dll;g"
Option  Description
-o  Tells ntsd.exe to debug child prcoesses.
-d  Pipes ntsd.exe through the kernel debugger to ensure the debugger is lauched on the right desktop (system context).
-g  Tells ntsd.exe to exit immediately when the child terminates.
-x  Disables first-chance break on access violation exceptions. The second occurrence of an access violation will break into the debugger.
-c  Sets the order of commands passed ntsd.exe.

设置好后,重新启动WSearch服务,调整搜索的文件,事情应该会发生。

另外,这是其他人经历的旧线索。除此之外,它还讨论了在项目的调试设置中使用 MSDN 工具 IFiltTst。

In your Project properties window, open ‘configuration properties’, ‘debugging’; and enter the following settings:
Debugger to launch:  Local Windows Debugger
Command: C:<your path here>IFiltTst.Exe
Command arguments: /i  "D:<your project test folder><good file>.<extention to filter>" /v 3 /t 5 /l /d
Working directory: /i  "D:<your project test folder>
Attach: No
Leave all other settings as default.

这两种方法都需要注册 DLL,以便搜索找到它。

相关内容

  • 没有找到相关文章

最新更新