Kir*_*sky 9 c++ visual-studio-2010 visual-studio
如何在加载任何链接的DLL之前停止程序?
我试图LoadLibraryExW
在Break At Function
调试选项中设置函数,它在该函数停止,但在此之前我在Visual Studio输出窗口中有以下内容:
'test.exe': Loaded 'C:\Windows\System32\ntdll.dll', Symbols loaded (source information stripped). 'test.exe': Loaded 'C:\Windows\System32\kernel32.dll', Symbols loaded (source information stripped). 'test.exe': Loaded 'C:\Windows\System32\KernelBase.dll', Symbols loaded (source information stripped). 'test.exe': Loaded 'C:\Windows\System32\uxtheme.dll', Symbols loaded (source information stripped). 'test.exe': Loaded 'C:\Windows\System32\msvcrt.dll', Symbols loaded (source information stripped). ---- plus about 30 DLLs ---
那么如何在加载之前在调试器中停止程序ntdll.dll
呢?好的,不是在加载之前,而是在执行任何DllMain
函数之前和初始化任何静态对象之前.
您可以通过向"图像文件执行选项"添加注册表项来执行此操作,并使用您的exe名称.添加名为"Debugger"的字符串类型的值,并将其设置为vsjitdebugger.exe以启动实时调试器对话框.然后,您可以选择一个可用的调试器,包括Visual Studio.在任何代码开始运行之前,Windows加载EXE后立即触发此对话框.
这是一个示例.reg文件,它在您启动notepad.exe时触发对话框.将密钥名称修改为.exe:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe]
"Debugger"="vsjitdebugger.exe"
Run Code Online (Sandbox Code Playgroud)