0030583: Draw Harness - ignore cpulimit when Debugger is attached on Windows platform
authorkgv <kgv@opencascade.com>
Sat, 16 Mar 2019 08:25:47 +0000 (11:25 +0300)
committerapn <apn@opencascade.com>
Wed, 20 Mar 2019 16:00:48 +0000 (19:00 +0300)
cpulimit now omits ExitProcess() when IsDebuggerPresent() returns TRUE.

src/Draw/Draw_BasicCommands.cxx

index a30799e..f85f5ba 100644 (file)
@@ -480,15 +480,31 @@ static unsigned int __stdcall CpuFunc (void * /*param*/)
     
     if (CPU_LIMIT > 0 && (aCurrent - CPU_CURRENT) >= CPU_LIMIT)
     {
-      cout << "Process killed by CPU limit (" << CPU_LIMIT << " sec)" << endl;
       aTimer.Stop();
-      ExitProcess (2);
+      if (IsDebuggerPresent())
+      {
+        std::cout << "ERROR: CPU limit (" << CPU_LIMIT << " sec) has been reached but ignored because of attached Debugger" << std::endl;
+        return 0;
+      }
+      else
+      {
+        std::cout << "ERROR: Process killed by CPU limit (" << CPU_LIMIT << " sec)" << std::endl;
+        ExitProcess (2);
+      }
     }
     if (CPU_LIMIT > 0 && anElapCurrent >= CPU_LIMIT)
     {
-      cout << "Process killed by elapsed limit (" << CPU_LIMIT << " sec)" << endl;
       aTimer.Stop();
-      ExitProcess (2);
+      if (IsDebuggerPresent())
+      {
+        std::cout << "ERROR: Elapsed limit (" << CPU_LIMIT << " sec) has been reached but ignored because of attached Debugger" << std::endl;
+        return 0;
+      }
+      else
+      {
+        std::cout << "ERROR: Process killed by elapsed limit (" << CPU_LIMIT << " sec)" << std::endl;
+        ExitProcess (2);
+      }
     }
   }
 }