VSCode调试CMake目标下单个leveldb测试,跳过其余测试方法
仅调试LevelDB单个测试文件的方法
LevelDB使用Google Test(GTest)框架管理测试,要单独调试filter_block_test.cc里的测试,有几种简单可行的方法:
方法1:修改VSCode调试配置,指定测试过滤规则
- 打开VSCode的
.vscode/launch.json(没有的话通过调试面板生成) - 在对应调试配置的
args字段中,添加GTest的过滤参数,精准匹配FilterBlockTest类下的所有测试:
{ "version": "0.2.0", "configurations": [ { "name": "Debug FilterBlockTest", "type": "cppvsdbg", // 根据你的编译器选择,比如clang用lldb "request": "launch", "program": "${command:cmake.launchTargetPath}", "args": ["--gtest_filter=FilterBlockTest*"], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false } ] }
- 启动这个调试配置后,只会运行
FilterBlockTest相关的测试,直接进入你要调试的代码段。
方法2:命令行指定过滤参数后调试
- 先编译
leveldbtests目标:cmake --build . --target leveldbtests - 直接运行带过滤参数的测试:
./leveldbtests --gtest_filter=FilterBlockTest* - 要调试的话,要么在VSCode里选择「附加到进程」找到
leveldbtests进程,要么直接在launch.json里把program路径指向编译好的leveldbtests,加上上述args参数。
方法3:单独创建测试目标(可选)
- 找到CMakeLists.txt中把
filter_block_test.cc加入leveldbtests的位置(第328行附近),单独为这个文件生成测试目标:
add_executable(filter_block_test table/filter_block_test.cc) target_link_libraries(filter_block_test leveldb gtest gtest_main)
- 重新生成CMake项目后,会出现单独的
filter_block_test目标,直接调试这个目标即可,完全不用管其他测试。
内容的提问来源于stack exchange,提问作者dashenswen
相关产品推荐
相关产品推荐

