gpt4 book ai didi

c++ - 调试器忽略动态加载的 DLL 中的错误

转载 作者:太空狗 更新时间:2023-10-29 22:53:32 27 4
gpt4 key购买 nike

我有一个与调试自编码 DLL 相关的非常奇怪的问题。我有一个 MFC 驱动的基于对话框的应用程序,几个静态链接的项目和几个在运行时加载的 DLL 项目。

我在调试中构建解决方案,运行应用程序,我可以轻松地调试那些 DLL 项目。现在的问题。如果 DLL 中有一些明显的运行时错误,如下所示

int* i = 0;
*i = 4;

调试器断言没有错误,没有抛出异常并静静地返回到空闲状态,甚至没有(可见的)堆栈返回。看起来当我在语句 *i = 4; 上按 F10 时,控件返回到主应用程序窗口并且程序继续执行,没有任何反应!如果代码中没有错误,它会执行得很好。但我希望在这种情况下会断言错误!它们在主应用程序的代码中。

我使用 LoadLibrary() 函数将我的 DLL 加载到应用程序中。 DLL 本身具有 MFC 静态链接,与解决方案中的所有其他项目一样。

有什么想法吗?甚至不知道要谷歌什么问题...

最佳答案

很可能您使用 LoadLibrary() 从错误的位置加载 DLL,并且缺少 PDB 会阻止调试器设置断点。您还可以在禁用断言的情况下加载零售 DLL(如果通过“要断言的错误”表示代码中有断言)。如果错误是页面错误(如您在示例中显示的 AV)并且您的调试器没有中断,则表示已处理异常。您总是可以在第一次机会时打开休息时间,例如。 sxe av .不确定如何从代码编辑工具中做到这一点,但您始终可以使用 real debugger .

关于c++ - 调试器忽略动态加载的 DLL 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2156697/

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