如何在程序执行的最开始设置断点

Kir*_*sky 9 c++ visual-studio-2010 visual-studio

如何在加载任何链接的DLL之前停止程序?

我试图LoadLibraryExWBreak 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函数之前和初始化任何静态对象之前.

Han*_*ant 7

您可以通过向"图像文件执行选项"添加注册表项来执行此操作,并使用您的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)