C++ 如何调试DirectShow推送源筛选器?
我尝试了一个基于DirectShow的虚拟相机示例,可在C++ 如何调试DirectShow推送源筛选器?,c++,debugging,com,directshow,virtual-webcam,C++,Debugging,Com,Directshow,Virtual Webcam,我尝试了一个基于DirectShow的虚拟相机示例,可在 我能够在浏览器(Chrome和Edge)中编译和构建并运行良好 但在Zoom和Team virtual camera这样的桌面应用程序中,虚拟相机会被识别出来,但不会显示任何帧。选择此虚拟相机时,只有黑屏可见,而不是预期的输出 我试着在阅读和调试之后进行调试 我在output pin类的构造函数中添加了DbgLog() DbgLog((LOG_TRACE, 3, TEXT("test string"))); 并在C
我能够在浏览器(Chrome和Edge)中编译和构建并运行良好 但在Zoom和Team virtual camera这样的桌面应用程序中,虚拟相机会被识别出来,但不会显示任何帧。选择此虚拟相机时,只有黑屏可见,而不是预期的输出 我试着在阅读和调试之后进行调试 我在
output pin
类的构造函数中添加了DbgLog()
DbgLog((LOG_TRACE, 3, TEXT("test string")));
并在Computer\HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\DirectShow\Debug\Filters.dll的LogToFile
字段中设置文件路径
但是我在vcam log.txt
中没有看到任何日志字符串我缺少什么或如何在该文件中获取日志字符串?调试基于PushSource/VCam的筛选器是缩放,这与调试在外部应用程序上下文中运行的DLL项目是一样的。即程序如下:
停止目标应用程序(缩放)
构建项目,根据需要向COM(regsvr32)注册DLL
是否已启动目标应用程序
将Visual Studio连接到正在运行的应用程序(Ctrl+Alt+P、本机代码调试器、缩放进程)
在项目中放置断点,启用异常中断
运行目标应用程序并以交互方式启动与视频捕获相关的活动
步骤3-4可以通过将项目设置设置为启动缩放作为调试目标(项目设置、调试、命令)来替换
此外,您可能希望在上放置一个断点,并查看调试输出路由到的确切位置。您可以在集成调试输出窗口中看到它(在OutputDebugString
use的情况下),或者您可以检查用于写入日志的确切文件