You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cdb执行调试脚本时如何将执行的命令同步输出到日志中

解决方案

直接使用cdb内置的命令回显开关即可实现需求,无需手动为每条命令添加打印逻辑,有两种可选实现方式:

方式一:修改调试脚本

在你的crash_info_script.wsc脚本的最开头添加一行命令:

.echo_cmd 1

开启该开关后,调试器会自动在执行每条命令前,先把命令本身输出到日志中,完全满足你要的「先显示命令、再显示执行结果」的要求。

如果后续需要关闭回显,执行.echo_cmd 0即可。

方式二:无需修改脚本,直接调整启动参数

你可以直接在cdb的启动命令里先开启回显,再加载执行脚本,连脚本文件都不用改,把原来的cdb启动命令的-c参数调整为如下内容即可:

PS> & "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe" -g -logo K:\_projects\fuzz\out_test.txt -c ".echo_cmd 1; $$><K:\_projects\fuzz\crash_info_script.wsc" "K:\_projects\fuzz\bin\simpleTest.exe" -f "K:\_projects\fuzz\corpus\crashes\test_00000000.bin"

效果说明

开启回显后,你的输出日志会自动生成如下格式的内容:

0:000> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************
# 以下为!analyze的执行输出内容
...
0:000> .exr -1
ExceptionAddress: 00007ff6e1231234 (simpleTest!main+0x000000000000002c)
   ExceptionCode: c0000005 (Access violation)
# 以下为.exr的执行输出内容
...

如果不需要前缀的调试器上下文标识(比如0:000>),可以在开启.echo_cmd 1后额外执行.printf "> "来定制前缀,或者通过输出后简单文本替换的方式统一调整格式,比逐条加打印逻辑效率高很多。

.echo_cmd是WinDbg系列调试器的内置原生功能,支持cdb、kd、windbg全系列,无额外依赖,不会影响命令本身的执行结果和调试逻辑。

内容的提问来源于stack exchange,提问作者Neitsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:00:01