gpt4 book ai didi

dll - 当另一个 DLL 中的 DLL 出现用户断点命中时,Win 10 上的 VC6 调试

转载 作者:行者123 更新时间:2023-12-04 10:37:17 25 4
gpt4 key购买 nike

我刚刚安装了一台 Windows 10 机器,因为 Windows 7 现在已经被删除了......以及旧的经典 VC6。加上 Service Pack 6,并安装了 Platform SDK。几十年来,我一直以这种方式使用它,在我的 Windows 7 机器上没有出现任何问题(太长了,无法说明为什么不升级到 VS 2010、2012、2015、2017、2019、yada yada、yada ......主题进行不同的辩论)

我提出了一个我在年底之前工作的现有项目。大 exe、其中的几个 DLL、C++ 对象等……在 1 月 1 日之前一切正常。

在我的新 Windows 10 安装中,当我尝试在调试器中启动它时,它给出了一个错误:

User Breakpoint Called

这甚至在调用 main 之前就出现了。并且可执行文件立即存在,甚至在消息框出现之前,因此没有要检查的堆栈跟踪。自然地,我寻找任何可能被调用的 C++ 构造函数,这些构造函数可能会破坏事物。但是没有。 (无论如何在我的 Windows 7 机器上从来没有任何问题)

我把它缩小到以下条件:
主 EXE 静态链接到 LIB/DLL。那个 dll 静态链接到另一个 LIB/DLL
当我删除底层 DLL 依赖项时,我可以在调试器中运行可执行文件。

我发现了几个正在经历这种情况的项目。

如果有人想查看它,我有一个测试项目(dsw 和 dps 文件),它演示了这一点(至少在我的 Windows 10 机器上)。它被剥离成只有 shell 。链接到 DLL 的 EXE,该 DLL 链接到另一个 DLL。如果我在链接阶段删除内部 DLL 依赖项,则具有单个 DLL 的可执行文件可以正常工作。

此外,EXE 也将在调试器之外运行。调试和发布。

最后,当我设置发布配置时,它也在 IDE 中运行,但没有调试信息。但是,如果我在发布版本中启用调试信息,它会在启动前再次崩溃。

很明显,Windows 10 中还有一些东西阻止调试容器运行。我也禁用了“容错堆垫片”,但没有改变。

有没有人经历过这样的事情?

有人有建议吗?

-斯科蒂

最佳答案

几年来,我一直没有使用 V6 调试器,在再次搜索希望找到解决方案之后,我终于找到了一种方法并想分享它。对于给出用户断点错误并在启动时立即退出的项目,使用 Build->Execute (ctrl+F5) 启动它们,然后执行 Build->Start Debug->Attach Process。您将无法对启动做任何事情,但是您可以在计时器或命令处设置断点以进入。我想您可以在调试时将长时间 sleep 作为主程序中的第一次调用,让您有机会获得并在那里设置断点。

关于dll - 当另一个 DLL 中的 DLL 出现用户断点命中时,Win 10 上的 VC6 调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60105658/

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