| 6925 | } |
| 6926 | |
| 6927 | bool COFF::RequestDebugInfo(bool allowRemote) |
| 6928 | { |
| 6929 | if (mDbgSymRequest == NULL) |
| 6930 | return false; |
| 6931 | |
| 6932 | if (mDbgSymRequest->mInProcess) |
| 6933 | return false; |
| 6934 | |
| 6935 | bool hasDebugInfo = false; |
| 6936 | mDbgSymRequest->SearchCache(); |
| 6937 | if (mDbgSymRequest->mFinalPDBPath.IsEmpty()) |
| 6938 | { |
| 6939 | if (!allowRemote) |
| 6940 | return false; |
| 6941 | |
| 6942 | if (GetCurrentThreadId() == mDebugger->mDebuggerThreadId) |
| 6943 | { |
| 6944 | auto prevRunState = mDebugger->mRunState; |
| 6945 | mDebugger->mRunState = RunState_SearchingSymSrv; |
| 6946 | |
| 6947 | mDbgSymRequest->mInProcess = true; |
| 6948 | mDebugger->mActiveSymSrvRequest = mDbgSymRequest; |
| 6949 | BF_ASSERT(mDebugger->mDebugManager->mCritSect.mLockCount == 1); |
| 6950 | mDebugger->mDebugManager->mCritSect.Unlock(); |
| 6951 | mDbgSymRequest->SearchSymSrv(); |
| 6952 | mDebugger->mDebugManager->mCritSect.Lock(); |
| 6953 | mDebugger->mActiveSymSrvRequest = NULL; |
| 6954 | mDbgSymRequest->mInProcess = false; |
| 6955 | |
| 6956 | mDebugger->mRunState = prevRunState; |
| 6957 | } |
| 6958 | else |
| 6959 | { |
| 6960 | return false; |
| 6961 | } |
| 6962 | } |
| 6963 | if (!mDbgSymRequest->mFinalPDBPath.IsEmpty()) |
| 6964 | hasDebugInfo = TryLoadPDB(mDbgSymRequest->mFinalPDBPath, mDbgSymRequest->mWantGuid, mDbgSymRequest->mWantAge); |
| 6965 | mDebugger->mDbgSymSrv.ReleaseRequest(mDbgSymRequest); |
| 6966 | mDbgSymRequest = NULL; |
| 6967 | return hasDebugInfo; |
| 6968 | } |
| 6969 | |
| 6970 | bool COFF::WantsAutoLoadDebugInfo() |
| 6971 | { |
no test coverage detected