VSCode调试源码编译ClickHouse:断点跳汇编的问题咨询
解决VSCode调试源码编译ClickHouse时的断点跳转问题
1. 修复断点路径不匹配问题
你遇到的断点提示有效位置在build目录下的文件,是因为VSCode没正确关联源码和编译产物的路径。直接在launch.json里配置sourceFileMap,把编译输出目录映射到源码根目录:
"configurations": [ { // 其他配置... "sourceFileMap": { "/home/你的用户名/build/": "/home/你的用户名/ClickHouse/" } } ]
替换成你自己的实际用户路径,确保build目录的绝对路径和源码根目录的绝对路径对应。
2. 解决断点触发后跳汇编的问题
跳汇编大概率是编译时没生成完整调试信息,或者开了优化导致源码和汇编无法对应。按以下步骤重新编译:
- 先清空旧的build目录:
rm -rf ~/ClickHouse/build && mkdir ~/ClickHouse/build && cd ~/ClickHouse/build - 用Debug模式重新生成编译配置:
cmake -DCMAKE_BUILD_TYPE=Debug .. - 重新编译(可以加-j参数加速,比如-j8):
make clickhouse-local -j8 - 确认
launch.json里的program指向build目录下的Debug版本可执行文件:"program": "${workspaceFolder}/build/programs/local/clickhouse-local"
3. 额外注意事项
- 断点要设在实际执行代码行,比如
LocalServer::main函数里的第一行执行代码,不要设在函数声明或者空行上。 - 编译完成后可以用gdb验证调试信息:运行
gdb ~/ClickHouse/build/programs/local/clickhouse-local,输入info sources,如果能看到你本地的源码路径,说明调试信息生成正常。
内容的提问来源于stack exchange,提问作者koarz
相关产品推荐
相关产品推荐

