| 6884 | } |
| 6885 | |
| 6886 | bool COFF::RequestImage() |
| 6887 | { |
| 6888 | if (!mDebugger->IsMiniDumpDebugger()) |
| 6889 | return false; |
| 6890 | |
| 6891 | if (mLoadState != DbgModuleLoadState_NotLoaded) |
| 6892 | return false; |
| 6893 | |
| 6894 | auto miniDumpDebugger = (MiniDumpDebugger*)mDebugger; |
| 6895 | |
| 6896 | if (mOrigImageData != NULL) |
| 6897 | return false; |
| 6898 | |
| 6899 | if (GetCurrentThreadId() == mDebugger->mDebuggerThreadId) |
| 6900 | { |
| 6901 | auto prevRunState = mDebugger->mRunState; |
| 6902 | mDebugger->mRunState = RunState_SearchingSymSrv; |
| 6903 | mDebugger->mDebugManager->mOutMessages.push_back(StrFormat("symsrv Searching for image '%s'", mFilePath.c_str())); |
| 6904 | |
| 6905 | auto dbgSymRequest = mDebugger->mDbgSymSrv.CreateRequest(); |
| 6906 | mDebugger->mActiveSymSrvRequest = dbgSymRequest; |
| 6907 | BF_ASSERT(mDebugger->mDebugManager->mCritSect.mLockCount == 1); |
| 6908 | mDebugger->mDebugManager->mCritSect.Unlock(); |
| 6909 | // We unlock to allow the IDE to continue updating while we search |
| 6910 | String imagePath = dbgSymRequest->SearchForImage(mFilePath, mTimeStamp, mImageSize); |
| 6911 | mDebugger->mDebugManager->mCritSect.Lock(); |
| 6912 | delete mDebugger->mActiveSymSrvRequest; |
| 6913 | mDebugger->mActiveSymSrvRequest = NULL; |
| 6914 | |
| 6915 | mDebugger->mRunState = prevRunState; |
| 6916 | |
| 6917 | return LoadModuleImage(imagePath); |
| 6918 | } |
| 6919 | else |
| 6920 | { |
| 6921 | return false; |
| 6922 | } |
| 6923 | |
| 6924 | return false; |
| 6925 | } |
| 6926 | |
| 6927 | bool COFF::RequestDebugInfo(bool allowRemote) |
| 6928 | { |
no test coverage detected