我正在尝试在 Windows 上使用命令行调试器,我想知道是否有办法在 cdb 或 windbg 控制台中突出显示语法?
1 回答
由于您标记了 windbg 并在标题中有 windbg 这个答案仅适用于 windbg
我想你知道 windbg 是 gui 而 cdb 是控制台应用程序
windbg src 窗口支持语法高亮并提供一些更改颜色的选项,您可以将其并排停靠
cdb 不支持颜色,除非你是魔术师
可以运行彩色 cdb 的魔术师的魔术食谱
(有人提到您可以创建一个 tools.ini 文件
创建两个条目col_mode: TRUE , col: srcchar R--
但需要注意的是,这仅适用于真正的控制台
我不知道 cmd.exe 是否是真正的控制台或错误的控制台
,除了 .printf /D 和 dml 之外,我永远无法哄它以彩色输出)
关于将 tools.ini 放在哪里的评论,可以将 tools.ini 放在任何想要的地方,只需要确保环境变量 INIT 指向放置它的目录
在下面的示例中,我在被调试目录或当前工作目录中有 tools.ini,用 .\ 和 .\tools.ini 表示,并且我将 ENV VAR init 设置为 .\ 即当前目录
这是windbg srcwindow的屏幕截图,语法突出显示src
然后是彩色的 cmd.exe dml .printf 输出
如您所见,已从 tools.ini 启用 .symopt+10
所以 cdb 已经解析并理解了颜色整体
但单步不上色
:\>set INIT
Environment variable INIT not defined
:\>cdb -c ".symopt;q" classmagic.exe | awk "/Reading/,/quit/"
0:000> cdb: Reading initial command '.symopt;q'
Symbol options are 0xB0327: <<<<<<<<<<<<<<<<<<<<
0x00000001 - SYMOPT_CASE_INSENSITIVE
0x00000002 - SYMOPT_UNDNAME
0x00000004 - SYMOPT_DEFERRED_LOADS
0x00000020 - SYMOPT_OMAP_FIND_NEAREST
xxxxxxxxxxxxx
quit:
:\>set INIT=.\
:\>cat .\tools.ini
[CDB]
col_mode: TRUE
col srcchar R--
lines: TRUE <<<<<<<<<<<<<<<<<<
:\>cdb -c ".symopt;q" classmagic.exe | awk "/Reading/,/quit/"
0:000> cdb: Reading initial command '.symopt;q'
Symbol options are 0xB0337: <<<<<<<<<<<<<<
0x00000001 - SYMOPT_CASE_INSENSITIVE
0x00000002 - SYMOPT_UNDNAME
0x00000004 - SYMOPT_DEFERRED_LOADS
0x00000010 - SYMOPT_LOAD_LINES <<<<<<<<<<<<<<<<
0x00000020 - SYMOPT_OMAP_FIND_NEAREST
xxxxxxxxxxxxxxxxxxxxxx
quit:
:\>