1

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

4

1 回答 1

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:

:\>

在此处输入图像描述

于 2019-11-28T17:53:07.527 回答