如何 运行 在调试器中进行 CTest 测试
How to run CTest test in debugger
假设在 CMakeLists.txt 我有
add_executable(mytarget main.cpp)
enable_testing()
add_test(mytarget_test0 mytarget -option0)
有什么简单的方法可以让我在 GDB 中 运行 mytarget 使用来自某个特定 CTest 测试的所有命令行选项? (除了在 CMakeLists 中搜索测试然后手动将 add_test 参数复制粘贴到命令行?)
现实生活场景:我运行所有测试都使用ctest,一个失败,我想在调试器中快速打开它。
在其他构建系统中,有使用 gdb 的命令行参数,例如在 Meson meson test --gdb testname
中,在 bazel bazel --run_under=gdbserver
中。我没有发现任何与 CTest
类似的东西
我使用以下程序:
make clean
make # Build target and all unit tests
make test # Run all unit tests: make test
您将获得结果列表和一些输出,具体取决于单元测试框架的工作。修复问题并在 gdb 中重新 运行 失败的测试,直到它成功。重新启动整个程序。
如果您使用的是 IDE(例如 QtCreator),则很容易通过失败的测试用例进行调试。
可以获取带参数的测试命令:
ctest -R $regex_matching_test -V -N
作为输出,您将得到如下内容:
Test project ../cmake-build-debug-gcc7
Constructing a list of tests
Done constructing a list of tests
1: Test command: ../cmake-build-debug-gcc7/my_tool "-v" "test0"
Test #1: my_tool_test0
Total Tests: 1
然后使用正则表达式可以获取 gdb 的命令行参数
假设在 CMakeLists.txt 我有
add_executable(mytarget main.cpp)
enable_testing()
add_test(mytarget_test0 mytarget -option0)
有什么简单的方法可以让我在 GDB 中 运行 mytarget 使用来自某个特定 CTest 测试的所有命令行选项? (除了在 CMakeLists 中搜索测试然后手动将 add_test 参数复制粘贴到命令行?)
现实生活场景:我运行所有测试都使用ctest,一个失败,我想在调试器中快速打开它。
在其他构建系统中,有使用 gdb 的命令行参数,例如在 Meson meson test --gdb testname
中,在 bazel bazel --run_under=gdbserver
中。我没有发现任何与 CTest
我使用以下程序:
make clean
make # Build target and all unit tests
make test # Run all unit tests: make test
您将获得结果列表和一些输出,具体取决于单元测试框架的工作。修复问题并在 gdb 中重新 运行 失败的测试,直到它成功。重新启动整个程序。
如果您使用的是 IDE(例如 QtCreator),则很容易通过失败的测试用例进行调试。
可以获取带参数的测试命令:
ctest -R $regex_matching_test -V -N
作为输出,您将得到如下内容:
Test project ../cmake-build-debug-gcc7
Constructing a list of tests
Done constructing a list of tests
1: Test command: ../cmake-build-debug-gcc7/my_tool "-v" "test0"
Test #1: my_tool_test0
Total Tests: 1
然后使用正则表达式可以获取 gdb 的命令行参数