diff options
| author | Ricardo Subtil <ricasubtil@gmail.com> | 2023-04-08 19:59:01 +0100 |
|---|---|---|
| committer | Ricardo Subtil <ricasubtil@gmail.com> | 2023-04-08 19:59:01 +0100 |
| commit | b8ae1c218c025f069b8017f2a84790f3f9869fd4 (patch) | |
| tree | 948a47d338cd7bcc623852cebcd483b765514fc2 | |
| parent | cfab3d2f57976913a03a891b30eaa0a5da4ff64f (diff) | |
| download | redot-engine-b8ae1c218c025f069b8017f2a84790f3f9869fd4.tar.gz | |
Fix DAP path mismatch on Windows
| -rw-r--r-- | editor/debugger/debug_adapter/debug_adapter_parser.cpp | 6 | ||||
| -rw-r--r-- | editor/debugger/debug_adapter/debug_adapter_parser.h | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/editor/debugger/debug_adapter/debug_adapter_parser.cpp b/editor/debugger/debug_adapter/debug_adapter_parser.cpp index fc806ded5e..6c44291fb0 100644 --- a/editor/debugger/debug_adapter/debug_adapter_parser.cpp +++ b/editor/debugger/debug_adapter/debug_adapter_parser.cpp @@ -341,6 +341,12 @@ Dictionary DebugAdapterParser::req_setBreakpoints(const Dictionary &p_params) co return prepare_error_response(p_params, DAP::ErrorType::WRONG_PATH, variables); } + // If path contains \, it's a Windows path, so we need to convert it to /, and make the drive letter uppercase + if (source.path.find("\\") != -1) { + source.path = source.path.replace("\\", "/"); + source.path = source.path.substr(0, 1).to_upper() + source.path.substr(1); + } + Array breakpoints = args["breakpoints"], lines; for (int i = 0; i < breakpoints.size(); i++) { DAP::SourceBreakpoint breakpoint; diff --git a/editor/debugger/debug_adapter/debug_adapter_parser.h b/editor/debugger/debug_adapter/debug_adapter_parser.h index eb5255dc78..9995066ab4 100644 --- a/editor/debugger/debug_adapter/debug_adapter_parser.h +++ b/editor/debugger/debug_adapter/debug_adapter_parser.h @@ -45,6 +45,12 @@ private: friend DebugAdapterProtocol; _FORCE_INLINE_ bool is_valid_path(const String &p_path) const { + // If path contains \, it's a Windows path, so we need to convert it to /, and check as case-insensitive. + if (p_path.contains("\\")) { + String project_path = ProjectSettings::get_singleton()->get_resource_path(); + String path = p_path.replace("\\", "/"); + return path.findn(project_path) != -1; + } return p_path.begins_with(ProjectSettings::get_singleton()->get_resource_path()); } |
