DebugView 命令行调试捕获
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/debugview。
技能介绍
要解决什么问题
在 Windows 上排查应用或驱动问题时,调试信息往往通过 OutputDebugString(用户态)或 DbgPrint/KdPrint(内核)输出,传统做法是打开 Sysinternals DebugView GUI 盯着窗口看。这对脚本、CI 和 AI 代理都不友好:没有可控的退出条件、输出混在横幅里、也难以按进程或模式过滤后交给下游解析。
技能如何工作
本技能围绕 DbgViewCli(DebugView 的命令行界面):在 PATH 或指定路径运行 dbgviewcli.exe,即可做实时捕获。
- 捕获面:默认开启 Win32(
-w);内核输出需-k且管理员权限,由Dbgv.sys自动加载。 - 过滤:
--filter/--exclude通配符、--pid-filter、--process-filter缩小噪声。 - 边界执行(适合自动化):
--duration、--max-lines、--wait-for保证进程会结束;--tail在退出时只刷最近 N 行。 - 输出:
--no-banner保持管道干净;--format text|csv|xml;--log及滚动/按日切分;--status输出机器可读状态。 - 进阶:启动日志(
--boot-enable)、远程--connect、对已有实例--pause/--resume/--stop、崩溃转储--crashdump。
设计上 stdout 为调试行、stderr 为错误/状态;静态链接 CRT,无额外 DLL 依赖。
适用边界与注意点
- Win32 捕获普通用户即可;内核与启动日志必须提权。
- 无
--duration等边界时捕获会一直运行,自动化务必组合边界参数。 - 执行任何
dbgviewcli二进制前,应用Get-AuthenticodeSignature确认由 Microsoft Corporation 签名,拒绝未签名或非微软发布者。 - Win32 无输出时:确认目标确实调用了
OutputDebugString,且未被调试器“吃掉”;多实例冲突可用--status或--quit处理 GUI DbgView。
使用场景
- 在 Windows CI 跑集成测试时,用 `--duration` 与 `--process-filter` 只抓取被测进程的 `OutputDebugString` 并导出 CSV 供失败分析。
- 驱动复现蓝屏或启动异常时,以管理员执行 `-k` 内核捕获,配合 `--wait-for` 在出现关键 DbgPrint 模式后自动结束。
- 线上故障排查中让代理执行 `--no-banner --max-lines`,把最近调试行写入日志文件,避免 GUI DbgView 无法远程操作。
- 需要早期启动阶段日志时,按工作流启用 `--boot-enable`,重启后结合 `--load` 或 `--crashdump` 对照转储中的调试输出。
适合人员
- 维护 Windows 内核或过滤驱动的工程师,需要在无 GUI 的构建机或 RDP 会话里抓取 DbgPrint 并限定捕获时长。
- 负责 Windows Server 故障值守的运维,希望用 PowerShell 包装脚本做带参数校验的边界捕获并落盘日志。
- 编写桌面端自动化测试的 QA,被测程序只打 `OutputDebugString`,需要按 PID 过滤并输出结构化结果给解析脚本。
- 在企业环境用 AI 代理执行调试采集的安全/平台同学,要求先验 Authenticode 再调用 dbgviewcli,并用 `--status` 避免多实例冲突。