是否可以在 cdb/windbg 中进行语法高亮显示?

Is it possible to have syntax highlighting in cdb/windbg?

我正在 windows 上试验命令行调试器,我想知道是否有办法在 cdb 或 windbg 控制台中突出显示语法?

因为你标记了 windbg 并且标题中有 windbg 这个答案仅适用于 windbg

我假设您知道 windbg 是 gui 而 cdb 是控制台应用程序

windbg src window 支持语法高亮并提供一些选项 改变颜色,你可以并排停靠它

除非你是魔术师,否则cdb不支持颜色

魔术师的魔法秘方运行彩色cdb

( 有人提到您可以创建一个 tools.ini 文件
创建两个条目 col_mode: TRUE , col: srcchar R--
但需要注意的是,这仅适用于真正的控制台
不知道cmd.exe是真console还是假console
除了带有 dml 的 .printf /D 之外,我永远无法让它以彩色输出 )

关于评论放在哪里tools.ini 可以将 tools.ini 放在任何需要的地方,只需确保 环境变量 INIT 指向放置它的目录

在下面的示例中,我在调试目录或当前工作目录中有 tools.ini,用 .\ 和 .\tools.ini 表示 我将 ENV VAR init 设置为 .\ 即当前目录

这里是 windbg srcwindow 的截图,语法高亮 src

后跟彩色 cmd.exe dml .printf 输出

如您所见,.symopt+10 已从 tools.ini

启用

所以 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:

:\>