调试信息文件行号高亮插件
English Version
本插件是一款专为开发者设计的代码编辑器扩展,旨在通过可视化方式增强调试体验。它能够智能解析调试输出中的汇编指令地址与源代码文件行号之间的关联,并在您的代码编辑器中实现双向高亮和导航,帮助您更快速、直观地理解程序执行流程。
功能特性
- 智能调试信息解析: 自动识别并解析调试工具(如GDB、LLDB等)输出的调试信息,提取其中的文件路径、行号以及对应的汇编指令地址。
- 源代码行号高亮: 根据解析到的调试信息,在代码编辑器中精确高亮显示当前调试点或选定汇编指令所对应的源代码行,提供即时视觉反馈。
- 汇编与源代码双向映射:
- 从汇编到源代码: 当您在调试视图中选择一条汇编指令时,插件会自动跳转到并高亮显示其在源代码文件中的对应行。
- 从源代码到汇编: 当您在源代码文件中选择一行代码时,插件可以显示或导航到与之关联的汇编指令(如果调试信息中包含此映射)。
- 通用编码支持: 插件主要以 UTF-8 编码 读取调试信息文件。为了提供更强的兼容性,插件在解析前会自动移除文件内容中可能存在的空字节(Null Character
\u0000
)。这有助于处理因某些工具输出或编码转换不当(例如 UTF-16 文件被误读为 UTF-8)而导致的隐藏字符问题,确保正则表达式能正确匹配。
示例
插件解析与视觉效果:
插件会识别出文件路径 D:/data/100_flyingturtle/2_code/c++/windows/source/template/final/build/vcpkg_installed/x64-mingw-dynamic/include/boost/asio/execution_context.hpp
和行号 119
。它会将这些信息与汇编地址 14000148b
关联起来。
当您点击汇编地址(或与特定行相关的代码范围,例如第 119 行)时,插件将自动在代码编辑器中打开或切换到 execution_context.hpp 文件,并将第 119 行进行高亮显示,如下图所示(示例图,实际效果可能因编辑器主题而异)。
反之,如果您在源代码中点击了第 119
行,插件可以跳转到调试输出中对应的汇编指令并高亮。
安装与使用
- 安装:
- 通过VS Code Marketplace: 在VS Code中打开扩展视图(
Ctrl+Shift+X
),搜索“jumptrace”,然后点击“安装”。
- 手动安装(VSIX): 如果您有插件的
.vsix
文件,可以在VS Code中通过“从VSIX安装”选项进行安装。
- 配置:
- 插件的行为可以通过VS Code的用户或工作区设置进行自定义。详情请参阅下面的“配置示例”部分。
- 确保您的项目工作区已正确加载,以便插件能够定位到源代码文件。
- 使用:
- 启动您的调试会话。
- 切换映射模式: 通过
jumptrace.switchover
命令,可以在不同的映射模式之间切换(单向映射、双向映射),需先配置文件路径。
- 关闭映射: 您可以通过命令面板(
Ctrl+Shift+P
)运行 jumptrace.close
命令。
- 当调试器输出包含文件路径和行号的调试信息时,点击行号,插件将自动在代码编辑器中高亮显示相应的源代码行与汇编代码。
- 通过在汇编视图或源代码视图中进行选择,插件将根据您的模式配置执行相应的跳转或高亮操作。
配置示例
您可以在VS Code的 settings.json
文件中配置 jumptrace
插件的行为。以下是可用的配置项及其示例:
- 目标文件路径,通常是调试输出或包含映射关系的文件
- 支持使用 $workspaceFolder 变量,例如 "$workspaceFolder/build/debug_output.log"
"jumptrace.file_path": "/path/to/your/debug_info_file.log"
- 高亮行的背景颜色,可以使用CSS颜色格式(如rgba, #RRGGBB等)
"jumptrace.highlightBackgroundColor": "rgba(131, 247, 95, 0.3)"
- 用于匹配调试输出路径和行号的正则表达式
- 插件在匹配前会移除文件内容中的所有空字节(\u0000),因此您的正则表达式无需考虑这些隐藏字符。
- 如果您的调试输出格式特殊,请自定义此项。
"jumptrace.pathRegex": "^([A-Za-z]:[\\\\/].*?):(\\d+)$"
- 用于跳过调试输出中不相关行的正则表达式
- 匹配此正则表达式的行将不会被插件处理。默认跳过以空格开头的行。
"jumptrace.skipRegex": "^\\s+"
贡献
我们欢迎任何形式的贡献!如果您有功能建议、发现了bug或者希望提交代码,请随时访问我们的 GitHub仓库地址 并在“Issues”或“Pull Requests”中提出。
许可证
本插件根据 MIT许可证 发布。详情请参阅 LICENSE
文件。