我需要分析一些x86转储文件,所以我想在我的计算机上安装x86 windbg.
或者如果我可以使用x64 windbg来分析x86转储文件?
我知道我可以在使用Win32平台创建项目后手动创建x64平台(如下所示),但我不想每次都这样做.
我可以在Visual Studio中更改任何配置文件吗?
////////////////////////////////////////////// Configuration Manager 2. Active Solution Platform 3. 4. x64
从MSDN文档中我们可以看到,我们不应该在DllMain入口点函数中调用LoadLibrary/FreeLibrary.
入口点功能应该只执行简单的初始化或终止任务.它不能调用LoadLibrary或LoadLibraryEx函数(或调用这些函数的函数),因为这可能会在DLL加载顺序中创建依赖循环.这可能导致在系统执行其初始化代码之前使用DLL.类似地,入口点函数不能调用FreeLibrary函数(或调用FreeLibrary则函数)过程终止期间,因为这可能会导致一个DLL正在使用的系统已经执行其终止代码之后.
我的问题是:我们可以从ExitInstance()调用FreeLibrary吗?例如:
Test.exe - 主要可执行文件
HINSTANCE hDllMFC = LoadLibrary(L"TestApp.dll");
if (hDllMFC != NULL)
{
FreeLibrary(hDllMFC);
}
while unload the hDllMFC, the call stack looks like:
TestApp.dll!CTestAppApp::ExitInstance() Line 42 C++
TestApp.dll!InternalDllMain() Line 155 C++
TestApp.dll!DllMain() Line 272 C++
TestApp.dll!__DllMainCRTStartup() Line 512 C
TestApp.dll!_DllMainCRTStartup() Line 477 C
ntdll.dll!LdrpUnloadDll() Unknown
ntdll.dll!LdrUnloadDll() Unknown
KernelBase.dll!FreeLibrary() Unknown
Test.exe!wmain() Line 17 C++
Run Code Online (Sandbox Code Playgroud)
TestApp.dll - 动态链接到MFC的常规DLL
CTestApp theApp;
HINSTANCE hDllResource = NULL;
BOOL CTestApp::InitInstance()
{
hDllResource = ::LoadLibrary(L"TestApp_Resource.dll");
return CWinApp::InitInstance();
}
int CTestApp::ExitInstance()
{
::FreeLibrary(hDllResource);
return …Run Code Online (Sandbox Code Playgroud)