From 4b5be46aad8b46ee9ef9aa7a0371509102869f7d Mon Sep 17 00:00:00 2001 From: Sangwook Kim Date: Wed, 22 Apr 2020 18:01:00 +0900 Subject: [PATCH] [Tizen] Search symbol directories recursively (#27) The SOS command 'setsymbolserver -directory' will automatically search all subdirectories of the specified directory. --- src/SOS/SOS.NETCore/SymbolReader.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/SOS/SOS.NETCore/SymbolReader.cs b/src/SOS/SOS.NETCore/SymbolReader.cs index b7af5278a..15dccdbf4 100644 --- a/src/SOS/SOS.NETCore/SymbolReader.cs +++ b/src/SOS/SOS.NETCore/SymbolReader.cs @@ -1183,9 +1183,19 @@ namespace SOS { symbolDirectoryPath = Path.GetFullPath(symbolDirectoryPath); - if (!IsDuplicateSymbolStore(store, (directorySymbolStore) => IsPathEqual(symbolDirectoryPath, directorySymbolStore.Directory))) + var probingPaths = new List { symbolDirectoryPath }; + if (Directory.Exists(symbolDirectoryPath)) { - store = new DirectorySymbolStore(s_tracer, store, symbolDirectoryPath); + // Add all subdirectories. + probingPaths.AddRange(Directory.GetDirectories(symbolDirectoryPath, "*", SearchOption.AllDirectories)); + } + // Make sure the root directory is enumerated last so that it comes first in the fallback tree. + foreach (var path in Enumerable.Reverse(probingPaths)) + { + if (!IsDuplicateSymbolStore(store, (directorySymbolStore) => IsPathEqual(path, directorySymbolStore.Directory))) + { + store = new DirectorySymbolStore(s_tracer, store, path); + } } } -- 2.34.1