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

标签 c++ debugging gdb windbg cdb

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

最佳答案

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

我假设您知道 windbg 是图形用户界面而 cdb 是控制台应用程序

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

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

可以运行彩色cdb的魔术师魔法配方

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

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

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

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

接着是彩色的 cmd.exe dml .printf 输出

enter image description here

如您所见,.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:

:\>

enter image description here

关于c++ - 是否可以在 cdb/windbg 中进行语法高亮显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59022328/

相关文章:

c++ - 使用 SWIG 为 perl 创建 C++ 接口(interface)?

c++ - 段错误,没有核心转储

python - 在 Notepad++ 中调试 Python 代码

java - eclipse可以调试或运行一个项目中的两个程序

c - printf 期间出现访问冲突错误

gdb 不显示行源

c++ - boost::Unique_Ptr 对象列表

debugging - LiteIDE 调试消息没有指定可执行文件使用目标 exec

android - Android和NDK下无法用gdb调试,启动Gdb导致App崩溃

c++ - Kinect SDK 2.0 处理和获取深度帧