changeset 109:06f054af8232

located win dbg tools installed as a part of windows 10 sdk
author Evgeniy.Koshkin@unit-519.Labs.IntelliJ.Net
date Tue, 17 May 2016 16:51:36 +0300
parents 4f5c5ca1ac44
children 0d0a3c1aa428
files agent/src/jetbrains/buildServer/symbols/WinDbgToolsDetector.java
diffstat 1 files changed, 17 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/agent/src/jetbrains/buildServer/symbols/WinDbgToolsDetector.java	Tue May 17 16:51:12 2016 +0300
+++ b/agent/src/jetbrains/buildServer/symbols/WinDbgToolsDetector.java	Tue May 17 16:51:36 2016 +0300
@@ -25,11 +25,13 @@
   private static final Logger LOG = Logger.getLogger(WinDbgToolsDetector.class);
 
   private static final String WINDOWS_KITS_INSTALLED_ROOTS_KEY_PATH = "Software/Microsoft/Windows Kits/Installed Roots";
+  private static final String WIN_DBG_10_ROOT_ENTRY_NAME = "WindowsDebuggersRoot10";
+  private static final String WIN_SDK_10_ROOT_ENTRY_NAME = "KitsRoot10";
   private static final String WIN_DBG_81_ROOT_ENTRY_NAME = "WindowsDebuggersRoot81";
   private static final String WIN_SDK_81_ROOT_ENTRY_NAME = "KitsRoot81";
   private static final String WIN_DBG_8_ROOT_ENTRY_NAME = "WindowsDebuggersRoot8";
   private static final String WIN_SDK_8_ROOT_ENTRY_NAME = "KitsRoot8";
-  private static final String WIN_DBG_HOME_DIR_RELATIVE_SDK8 = "\\Debuggers";
+  private static final String WIN_DBG_HOME_DIR_RELATIVE = "\\Debuggers";
 
   public static final String WIN_DBG_PATH = "WinDbg" + DotNetConstants.PATH;
   private static final String DEBUGGING_TOOLS_FOR_WINDOWS = "Debugging Tools for Windows";
@@ -48,14 +50,18 @@
     if (!config.getSystemInfo().isWindows()) return;
     LOG.info("Searching WinDbg installation...");
 
-    LOG.info("Searching the WinDbg as part of Windows 8.1 SDK");
-    File winDbgHomeDir = searchSDK8x(WIN_DBG_81_ROOT_ENTRY_NAME, WIN_SDK_81_ROOT_ENTRY_NAME, "8.1");
-    if(winDbgHomeDir == null) {
-      LOG.info("Searching the WinDbg as part of Windows 8 SDK");
-      winDbgHomeDir = searchSDK8x(WIN_DBG_8_ROOT_ENTRY_NAME, WIN_SDK_8_ROOT_ENTRY_NAME, "8");
-    } if(winDbgHomeDir == null) {
-      LOG.info("Searching the WinDbg as part of Windows 7 SDK");
-      winDbgHomeDir = searchSDK7x();
+    LOG.info("Searching the WinDbg as part of Windows 10 SDK");
+    File winDbgHomeDir = searchSDK8AndLater(WIN_DBG_10_ROOT_ENTRY_NAME, WIN_SDK_10_ROOT_ENTRY_NAME, "10");
+    if(winDbgHomeDir == null){
+      LOG.info("Searching the WinDbg as part of Windows 8.1 SDK");
+      winDbgHomeDir = searchSDK8AndLater(WIN_DBG_81_ROOT_ENTRY_NAME, WIN_SDK_81_ROOT_ENTRY_NAME, "8.1");
+      if(winDbgHomeDir == null) {
+        LOG.info("Searching the WinDbg as part of Windows 8 SDK");
+        winDbgHomeDir = searchSDK8AndLater(WIN_DBG_8_ROOT_ENTRY_NAME, WIN_SDK_8_ROOT_ENTRY_NAME, "8");
+      } if(winDbgHomeDir == null) {
+        LOG.info("Searching the WinDbg as part of Windows 7 SDK");
+        winDbgHomeDir = searchSDK7x();
+      }
     }
 
     if(winDbgHomeDir == null) LOG.info("WinDbg tools were not found on this machine.");
@@ -67,7 +73,7 @@
   }
 
   @Nullable
-  private File searchSDK8x(String winDbgRootEntryName, String winSdkRootEntryName, String sdkVersion) {
+  private File searchSDK8AndLater(String winDbgRootEntryName, String winSdkRootEntryName, String sdkVersion) {
     File winDbgHomeDir = myRegistryAccessor.readRegistryFile(LOCAL_MACHINE, BIT32, WINDOWS_KITS_INSTALLED_ROOTS_KEY_PATH, winDbgRootEntryName);
     if (winDbgHomeDir != null) return winDbgHomeDir;
     final File sdkHomeDir = myRegistryAccessor.readRegistryFile(LOCAL_MACHINE, BIT32, WINDOWS_KITS_INSTALLED_ROOTS_KEY_PATH, winSdkRootEntryName);
@@ -76,7 +82,7 @@
       return null;
     }
     LOG.debug(String.format("Windows SDK %s found, searching WinDbg under its home directory.", sdkHomeDir));
-    winDbgHomeDir = new File(sdkHomeDir, WIN_DBG_HOME_DIR_RELATIVE_SDK8);
+    winDbgHomeDir = new File(sdkHomeDir, WIN_DBG_HOME_DIR_RELATIVE);
     if(winDbgHomeDir.isDirectory()) return winDbgHomeDir;
     LOG.debug("Failed to find WinDbg home directory under Windows SDK home directory detected on path " + sdkHomeDir.getAbsolutePath());
     return null;