// // Assembly.cs // // Author: // Jonathan Chang // // Copyright (c) 2022 // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System; namespace Mono.Debugging.Client { /// /// Represents the assembly loaded during the debugging session. /// public class Assembly { public Assembly (string name, string path, bool optimized, bool userCode, string symbolStatus, string symbolFile, int? order, string version, string timestamp, string address, string process, string appdomain, long? processId, bool hasSymbol = false, bool isDynamic = false) { Name = name; Path = path; Optimized = optimized; SymbolStatus = symbolStatus; SymbolFile = symbolFile; Order = order.GetValueOrDefault (-1); TimeStamp = timestamp; Address = address; Process = process; AppDomain = appdomain; Version = version; UserCode = userCode; ProcessId = processId; IsDynamic = isDynamic; HasSymbols = hasSymbol; } public Assembly (string path) { Path = path; } /// /// Represents the name of the assembly. /// public string Name { get; private set; } /// /// Represents the local path of the assembly is loaded from. /// public string Path { get; private set; } /// /// Shows if the assembly has been optimized, true if the assembly is optimized. /// public bool Optimized { get; private set; } /// /// Shows if the assembly is considered 'user code' by a debugger that supports 'Just My Code'.True if it's considered. /// public bool UserCode { get; private set; } /// /// Represents the Description on if symbols were found for the assembly (ex: 'Symbols Loaded', 'Symbols not found', etc. /// public string SymbolStatus { get; private set; } /// /// Represents the Logical full path to the symbol file. The exact definition is implementation defined. /// public string SymbolFile { get; private set; } /// /// Represents the order in which the assembly was loaded. /// public int Order { get; private set; } = -1; /// /// Represents the version of assembly. /// public string Version { get; private set; } /// /// Represents the time when the assembly was built in the units of UNIX timestamp formatted as a 64-bit unsigned decimal number in a string. /// public string TimeStamp { get; private set; } /// /// Represents the Address where the assembly was loaded as a 64-bit unsigned decimal number. /// public string Address { get; private set; } /// /// Represent the process name and process ID the assembly is loaded. /// public string Process { get; private set; } /// /// Represent the name of the AppDomain where the assembly is loaded. /// public string AppDomain { get; private set; } /// /// Represent the process ID the assembly is loaded. /// public long? ProcessId { get; private set; } = -1; /// /// Indicates if the assembly has symbol file. Mainly use for mono project. /// public bool HasSymbols { get; private set; } /// /// Indicate if the assembly is a dynamic. Mainly use for mono project. /// public bool IsDynamic { get; private set; } } }