什么调试工具可用于directshow过滤器?目前,我有一个编译和注册视频源过滤器的项目,然后在GraphEdit中设置图形。我在Visual Studio 2008中使用C++。是否有可能以任何方式将调试器连接到过滤器,我可以设置断点,检查变量等?除此之外,还有什么方法可以将诊断信息记录在某个可以实时查看的位置?如何调试C++ DirectShow过滤器
回答
连接调试器应该没有问题。在过滤器的Visual Studio项目中将graphedt.exe设置为调试目标,并且应该能够在代码中设置断点。如果你遇到困难,可能是因为某些解码器的反调试逻辑 - 你必须避免使用这些。
您还可以通过记录交付及其时间戳和延迟获得有用的调试信息。我发现要做的最好的方法是使用传递过滤器。有一个像这样的源代码和二进制形式的监视器过滤器可以从www.gdcl.co.uk/mobile(win32和win mobile)获得。
ģ
调试实时应用程序的最佳方式是生成日志文件。如果您想实时查看日志信息,只需创建一个基于客户端服务器套接字的日志记录。例如,您的应用可以开始监听端口。外部查看器应用程序(客户端)可以连接到该端口并开始实时接收日志信息。
在调试版本,DirectShow的基类已经包括由注册表项控制的灵活的记录机制。基类本身使用这种机制来记录他们自己的操作。如果需要,应该可以修改基类,以便在诊断版本构建中提供日志记录。
一个简单的例子:
DbgLog((LOG_TIMING, 1, TEXT(__FUNCTION__ " : Frame:%d, Stream Time:%dms, Sample Time:%dms"),
(int)currentFrame, (int)currentTime, (int)sampleTime));
这产生由调用功能的名称为前缀,如果为“TIMING”类别记录级别被设置为> = 1日志输出。每个类别的记录级别都在注册表中的下面的键下进行配置。对于所有筛选器和子密钥的最小日志记录级别,都有一个“GLOBAL”子键,用于通过筛选文件名进行额外日志记录。 (Windows x64的32位代码)HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ DirectShow \ Debug HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ DirectShow \ Debug 。
编辑每个过滤器的“LogToFile”键以指定一个记录目标。这默认为'Debug'(调试器输出),但也可以是'Console'登录到控制台窗口或要登录的文件名。其他类型的日志记录也可以添加。
控制台选项特别方便不带调试器的实时监控。在我的系统上,基类无法打开控制台窗口(如果尚未打开),所以我在wxdebug.cpp中添加了以下调整来无条件打开控制台(如果请求输出控制台)。
if (!lstrcmpi(szFile, TEXT("Console"))) {
AllocConsole(); // modification - always allocate console if using Console output
进一步的信息,请参阅DirectShow Debug Output Functions。
一些工具,用于分析过滤器之间的数据流:
开源图形编辑器GraphStudioNext分析过滤器(和分析文件作家)的兴趣两个过滤器之间插入时会显示活动性的视觉日志。您需要自己构建以获取此功能。
Geraint Davie's monitor filter将向磁盘写入活动日志文件。
- 1. 调试DirectShow过滤器
- 2. 如何调试H264 DirectShow过滤器?
- 3. Quicktime Directshow过滤器
- 4. DirectShow DVD过滤器图
- 5. DirectShow源代码过滤器
- 6. C#注册嵌入式Directshow过滤器
- 7. 如何找到DirectShow过滤器的clsid?
- 8. DirectShow如何管理默认过滤器?
- 9. 如何创建Directshow过滤器?
- 10. DirectShow示例过滤器:如何使用?
- 11. 注册Directshow过滤器
- 12. 如何将DirectShow过滤器转换为C++ \ C#?
- 13. DirectShow过滤器:转换
- 14. CLSID for x264 DirectShow过滤器
- 15. DirectShow的Matroska Muxer过滤器
- 16. 水印+ Directshow过滤器
- 17. 写给Directshow源过滤器
- 18. 如何更改Directshow过滤器属性C++
- 19. 自定义DirectShow图形源过滤器
- 20. CMP4解码器的DirectShow过滤器图
- 21. DirectShow:检测相关过滤器并添加这些过滤器?
- 22. DirectShow过滤器检测特定频率
- 23. CoCreateInstance for directshow过滤器返回E_NOINTERFACE
- 24. DirectShow过滤器访问线程
- 25. DirectShow过滤器中的静态用法
- 26. 将帧保存在directshow过滤器中
- 27. 我的DirectShow过滤器没有针脚
- 28. 如何获得未注册的DirectShow过滤器的默认过滤器名称
- 29. directshow视频裁剪过滤器
- 30. 创建DirectShow过滤器以选择HWND
Omigod。我不知道你可以像这样附加调试器。那很壮观。 – 2010-06-09 22:56:33