From 52e8c4f75be9a6acf852893c328d77f758eb4b5c Mon Sep 17 00:00:00 2001 From: Marian Krivos Date: Tue, 23 Aug 2011 06:42:41 +0000 Subject: [PATCH] trunk/branch integration: VxWorks & Wince --- Foundation/src/Debugger.cpp | 67 ++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/Foundation/src/Debugger.cpp b/Foundation/src/Debugger.cpp index 9f2ed2419..e9410bd1f 100644 --- a/Foundation/src/Debugger.cpp +++ b/Foundation/src/Debugger.cpp @@ -1,7 +1,7 @@ // // Debugger.cpp // -// $Id: //poco/svn/Foundation/src/Debugger.cpp#3 $ +// $Id: //poco/1.4/Foundation/src/Debugger.cpp#3 $ // // Library: Foundation // Package: Core @@ -39,10 +39,10 @@ #include #include #if defined(POCO_OS_FAMILY_WINDOWS) - #include "Poco/UnWindows.h" -#elif defined(POCO_OS_FAMILY_UNIX) - #include - #include + #include "Poco/UnWindows.h" +#elif defined(POCO_OS_FAMILY_UNIX) && !defined(POCO_VXWORKS) + #include + #include #elif defined(POCO_OS_FAMILY_VMS) #include #include @@ -63,11 +63,26 @@ namespace Poco { bool Debugger::isAvailable() { #if defined(_DEBUG) - #if defined(POCO_OS_FAMILY_WINDOWS) - return IsDebuggerPresent() ? true : false; - #elif defined(POCO_OS_FAMILY_UNIX) - return std::getenv("POCO_ENABLE_DEBUGGER") ? true : false; - #elif defined(POCO_OS_FAMILY_VMS) + #if defined(POCO_OS_FAMILY_WINDOWS) + #if defined(_WIN32_WCE) + #if (_WIN32_WCE >= 0x600) + BOOL isDebuggerPresent; + if (CheckRemoteDebuggerPresent(GetCurrentProcess(), &isDebuggerPresent)) + { + return isDebuggerPresent ? true : false; + } + return false; + #else + return false; + #endif + #else + return IsDebuggerPresent() ? true : false; + #endif + #elif defined(POCO_VXWORKS) + return false; + #elif defined(POCO_OS_FAMILY_UNIX) + return std::getenv("POCO_ENABLE_DEBUGGER") ? true : false; + #elif defined(POCO_OS_FAMILY_VMS) return true; #endif #else @@ -80,13 +95,13 @@ void Debugger::message(const std::string& msg) { #if defined(_DEBUG) std::fputs("\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", stderr); - std::fputs(msg.c_str(), stderr); - std::fputs("\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", stderr); - #if defined(POCO_OS_FAMILY_WINDOWS) - if (IsDebuggerPresent()) - { + std::fputs(msg.c_str(), stderr); + std::fputs("\n%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n", stderr); + #if defined(POCO_OS_FAMILY_WINDOWS) + if (isAvailable()) + { #if defined(POCO_WIN32_UTF8) && !defined(POCO_NO_WSTRING) - std::wstring umsg; + std::wstring umsg; UnicodeConverter::toUTF16(msg, umsg); umsg += '\n'; OutputDebugStringW(umsg.c_str()); @@ -115,14 +130,18 @@ void Debugger::message(const std::string& msg, const char* file, int line) void Debugger::enter() { #if defined(_DEBUG) - #if defined(POCO_OS_FAMILY_WINDOWS) - if (IsDebuggerPresent()) - { - DebugBreak(); - } - #elif defined(POCO_OS_FAMILY_UNIX) - if (isAvailable()) - { + #if defined(POCO_OS_FAMILY_WINDOWS) + if (isAvailable()) + { + DebugBreak(); + } + #elif defined(POCO_VXWORKS) + { + // not supported + } + #elif defined(POCO_OS_FAMILY_UNIX) + if (isAvailable()) + { kill(getpid(), SIGINT); } #elif defined(POCO_OS_FAMILY_VMS)