Merge topic 'fix-win-dbg-msg'

cd46ecad19 Debugger: Fix pipe connection error message construction on Windows

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8785
This commit is contained in:
Brad King
2023-09-11 12:12:10 +00:00
committed by Kitware Robot
2 changed files with 18 additions and 1 deletions

View File

@@ -221,13 +221,28 @@ void cmDebuggerPipeClient_WIN32::WaitForConnection()
NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
if (hPipe == INVALID_HANDLE_VALUE) {
auto err = GetLastError();
throw std::runtime_error("CreateFile failed with " + err);
throw std::runtime_error(std::string("CreateFile failed for pipe ") +
GetErrorMessage(err));
}
pipes = std::make_unique<DuplexPipe_WIN32>(hPipe);
}
}
std::string cmDebuggerPipeClient_WIN32::GetErrorMessage(DWORD errorCode)
{
LPSTR message = nullptr;
DWORD size = FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
nullptr, errorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)&message, 0, nullptr);
std::string errorMessage =
this->PipeName + ": " + std::string(message, size);
LocalFree(message);
return errorMessage;
}
bool cmDebuggerPipeClient_WIN32::isOpen()
{
return pipes != nullptr;

View File

@@ -90,6 +90,8 @@ public:
bool write(void const* buffer, size_t n) override;
private:
std::string GetErrorMessage(DWORD errorCode);
std::string const PipeName;
std::unique_ptr<DuplexPipe_WIN32> pipes;
};