diff options
author | Glen Chung <kuchung@microsoft.com> | 2023-03-16 00:50:08 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-05-30 13:46:12 (GMT) |
commit | a9a592f96e6498da302f8e968be1db0ad3c32123 (patch) | |
tree | 0d75f16ee2eae99b1a3f063e575b3f5f8f2ee931 /Tests/RunCMake | |
parent | b0d1ddb7234950374977b83f8dbded806c15b356 (diff) | |
download | CMake-a9a592f96e6498da302f8e968be1db0ad3c32123.zip CMake-a9a592f96e6498da302f8e968be1db0ad3c32123.tar.gz CMake-a9a592f96e6498da302f8e968be1db0ad3c32123.tar.bz2 |
cmake: Add debugger
- Depends on cppdap and jsoncpp.
- Add --debugger argument to enable the Debugger.
- Add --debugger-pipe argument for DAP traffics over named pipes.
- Support breakpoints by filenames and line numbers.
- Support exception breakpoints.
- Call stack shows filenames and line numbers.
- Show Cache Variables.
- Show the state of currently defined targets,
tests and directories with their properties.
- Add cmakeVersion to DAP initialize response.
- Include unit tests.
Co-authored-by: Ben McMorran <bemcmorr@microsoft.com>
Diffstat (limited to 'Tests/RunCMake')
18 files changed, 37 insertions, 1 deletions
diff --git a/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog-result.txt b/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog-stderr.txt b/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog-stderr.txt new file mode 100644 index 0000000..6269c19 --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog-stderr.txt @@ -0,0 +1,2 @@ +^CMake Error: No file specified for --debugger-dap-log +CMake Error: Run 'cmake --help' for all supported options\.$ diff --git a/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog.cmake b/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog.cmake new file mode 100644 index 0000000..6ddce8b --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerArgMissingDapLog.cmake @@ -0,0 +1 @@ +message(FATAL_ERROR "This should not be reached.") diff --git a/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe-result.txt b/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe-stderr.txt b/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe-stderr.txt new file mode 100644 index 0000000..947cb00 --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe-stderr.txt @@ -0,0 +1,2 @@ +^CMake Error: No path specified for --debugger-pipe +CMake Error: Run 'cmake --help' for all supported options\.$ diff --git a/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe.cmake b/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe.cmake new file mode 100644 index 0000000..6ddce8b --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerArgMissingPipe.cmake @@ -0,0 +1 @@ +message(FATAL_ERROR "This should not be reached.") diff --git a/Tests/RunCMake/CommandLine/DebuggerCapabilityInspect-check.cmake b/Tests/RunCMake/CommandLine/DebuggerCapabilityInspect-check.cmake new file mode 100644 index 0000000..75769f2 --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerCapabilityInspect-check.cmake @@ -0,0 +1,5 @@ +if(actual_stdout MATCHES [["debugger" *: *true]]) + set_property(DIRECTORY PROPERTY CMake_ENABLE_DEBUGGER 1) +else() + set_property(DIRECTORY PROPERTY CMake_ENABLE_DEBUGGER 0) +endif() diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupported-result.txt b/Tests/RunCMake/CommandLine/DebuggerNotSupported-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupported-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupported-stderr.txt b/Tests/RunCMake/CommandLine/DebuggerNotSupported-stderr.txt new file mode 100644 index 0000000..5845bb3 --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupported-stderr.txt @@ -0,0 +1,2 @@ +^CMake Error: CMake was not built with support for --debugger +CMake Error: Run 'cmake --help' for all supported options\.$ diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupported.cmake b/Tests/RunCMake/CommandLine/DebuggerNotSupported.cmake new file mode 100644 index 0000000..6ddce8b --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupported.cmake @@ -0,0 +1 @@ +message(FATAL_ERROR "This should not be reached.") diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog-result.txt b/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog-stderr.txt b/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog-stderr.txt new file mode 100644 index 0000000..84c2200 --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog-stderr.txt @@ -0,0 +1,2 @@ +^CMake Error: CMake was not built with support for --debugger-dap-log +CMake Error: Run 'cmake --help' for all supported options\.$ diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog.cmake b/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog.cmake new file mode 100644 index 0000000..6ddce8b --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupportedDapLog.cmake @@ -0,0 +1 @@ +message(FATAL_ERROR "This should not be reached.") diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe-result.txt b/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe-stderr.txt b/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe-stderr.txt new file mode 100644 index 0000000..5684f4c --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe-stderr.txt @@ -0,0 +1,2 @@ +^CMake Error: CMake was not built with support for --debugger-pipe +CMake Error: Run 'cmake --help' for all supported options\.$ diff --git a/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe.cmake b/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe.cmake new file mode 100644 index 0000000..6ddce8b --- /dev/null +++ b/Tests/RunCMake/CommandLine/DebuggerNotSupportedPipe.cmake @@ -0,0 +1 @@ +message(FATAL_ERROR "This should not be reached.") diff --git a/Tests/RunCMake/CommandLine/E_capabilities-stdout.txt b/Tests/RunCMake/CommandLine/E_capabilities-stdout.txt index e2f63cd..c01f414 100644 --- a/Tests/RunCMake/CommandLine/E_capabilities-stdout.txt +++ b/Tests/RunCMake/CommandLine/E_capabilities-stdout.txt @@ -1 +1 @@ -^{"fileApi":{"requests":\[{"kind":"codemodel","version":\[{"major":2,"minor":6}]},{"kind":"configureLog","version":\[{"major":1,"minor":0}]},{"kind":"cache","version":\[{"major":2,"minor":0}]},{"kind":"cmakeFiles","version":\[{"major":1,"minor":0}]},{"kind":"toolchains","version":\[{"major":1,"minor":0}]}]},"generators":\[.*\],"serverMode":false,"tls":(true|false),"version":{.*}}$ +^{"debugger":(true|false),"fileApi":{"requests":\[{"kind":"codemodel","version":\[{"major":2,"minor":6}]},{"kind":"configureLog","version":\[{"major":1,"minor":0}]},{"kind":"cache","version":\[{"major":2,"minor":0}]},{"kind":"cmakeFiles","version":\[{"major":1,"minor":0}]},{"kind":"toolchains","version":\[{"major":1,"minor":0}]}]},"generators":\[.*\],"serverMode":false,"tls":(true|false),"version":{.*}}$ diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index 205949b..45b4c0e 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -125,6 +125,17 @@ run_cmake_command(cache-bad-entry run_cmake_command(cache-empty-entry ${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-empty-entry/) +run_cmake_command(DebuggerCapabilityInspect ${CMAKE_COMMAND} -E capabilities) +get_property(CMake_ENABLE_DEBUGGER DIRECTORY PROPERTY CMake_ENABLE_DEBUGGER) +if(CMake_ENABLE_DEBUGGER) + run_cmake_with_options(DebuggerArgMissingPipe --debugger-pipe) + run_cmake_with_options(DebuggerArgMissingDapLog --debugger-dap-log) +else() + run_cmake_with_options(DebuggerNotSupported --debugger) + run_cmake_with_options(DebuggerNotSupportedPipe --debugger-pipe pipe) + run_cmake_with_options(DebuggerNotSupportedDapLog --debugger-dap-log dap-log) +endif() + function(run_ExplicitDirs) set(RunCMake_TEST_NO_CLEAN 1) set(RunCMake_TEST_NO_SOURCE_DIR 1) |