gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:36:35 25 4
gpt4 key购买 nike

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

我尝试在 Break At Function 调试选项中设置 LoadLibraryExW 函数,它在该函数处停止,但在此之前我在 Visual Studio 输出中有以下内容 window :

'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"

关于c++ - 如何在程序执行的最开始设置断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com