| 795 | } |
| 796 | |
| 797 | BF_EXPORT void BF_CALLTYPE Debugger_SetSymSrvOptions(const char* symCacheDir, const char* symSrvStr, int flags) |
| 798 | { |
| 799 | Array<String> symServers; |
| 800 | |
| 801 | const char* startStr = symSrvStr; |
| 802 | for (const char* cPtr = symSrvStr; true; cPtr++) |
| 803 | { |
| 804 | if ((*cPtr == '\n') || (*cPtr == 0)) |
| 805 | { |
| 806 | String symStr = String(startStr, cPtr - startStr); |
| 807 | symStr.Trim(); |
| 808 | if (symStr.EndsWith('/')) |
| 809 | symStr.Remove((int)symStr.length() - 1, 1); |
| 810 | if (!symStr.IsEmpty()) |
| 811 | symServers.Add(symStr); |
| 812 | startStr = cPtr; |
| 813 | } |
| 814 | |
| 815 | if (*cPtr == 0) |
| 816 | break; |
| 817 | } |
| 818 | |
| 819 | AutoCrit autoCrit(gDebugManager->mCritSect); |
| 820 | |
| 821 | gDebugManager->mSymSrvOptions.mCacheDir = symCacheDir; |
| 822 | gDebugManager->mSymSrvOptions.mSymbolServers = symServers; |
| 823 | gDebugManager->mSymSrvOptions.mFlags = (BfSymSrvFlags)flags; |
| 824 | |
| 825 | gDebugManager->mSymSrvOptions.mCacheDir.Trim(); |
| 826 | if (gDebugManager->mSymSrvOptions.mCacheDir.IsEmpty()) |
| 827 | gDebugManager->mSymSrvOptions.mFlags = BfSymSrvFlag_Disable; |
| 828 | |
| 829 | if (flags & BfSymSrvFlag_TempCache) |
| 830 | { |
| 831 | if (!gDebugManager->mSymSrvOptions.mCacheDir.IsEmpty()) |
| 832 | { |
| 833 | gDebugManager->mSymSrvOptions.mCacheDir.Append("\\temp"); |
| 834 | RecursiveDeleteDirectory(gDebugManager->mSymSrvOptions.mCacheDir); |
| 835 | } |
| 836 | } |
| 837 | |
| 838 | gDebugManager->SetSourceServerCacheDir(); |
| 839 | } |
| 840 | |
| 841 | BF_EXPORT void BF_CALLTYPE Debugger_SetSourcePathRemap(const char* remapStr) |
| 842 | { |