コード例 #1
0
 /// <summary>
 /// Static constructor initializing the demangling mechanisms.
 /// </summary>
 static Symbol()
 {
     if (!LibStdCppHelper.TryGetCxaDemangle(out CxaDemangle))
     {
         Logger.Log(LogLevel.Warning, "Could not load demangling library. Symbols will not be demangled.");
         return;
     }
 }
コード例 #2
0
        /// <summary>
        /// Static constructor initializing the demangling mechanisms.
        /// </summary>
        static Symbol()
        {
            IntPtr library;

            if (!SharedLibraries.TryLoadLibrary(LibStdCppHelper.LibStdCppName, out library))
            {
                var libstdPath = LibStdCppHelper.GetLibStdCppPath();
                if (!SharedLibraries.TryLoadLibrary(libstdPath, out library))
                {
                    Logger.Log(LogLevel.Warning, "Could not load demangling library. Symbols will not be demangled.");
                    return;
                }
            }
            var address      = SharedLibraries.GetSymbolAddress(library, "__cxa_demangle");
            var delegateType = typeof(LibStdCppHelper.CxaDemangleDelegate);
            var callback     = (LibStdCppHelper.CxaDemangleDelegate)Marshal.GetDelegateForFunctionPointer(address, delegateType);

            CxaDemangle = callback;
        }