C ++程序在ntdll.dll执行时挂起

时间:2009-08-13 18:24:01

标签: c++

当我尝试运行我的程序时,它从不进入main()函数,但只是挂起。但是有些怎么样,我的程序在我的一个类中抛出异常,作为多次调用ntdll.dll后堆栈中的第一个调用。异常似乎是导致我的程序挂起“< bad ptr>”的因素。我无法触发我设置的任何断点,因此更难找到问题所在的位置。

2 个答案:

答案 0 :(得分:3)

您需要确定导致崩溃的系统调用。通常这种事情是将垃圾传递到某些Windows API的结果。

使用调试器并查看调用堆栈。代码中的最后一个条目可能是问题的原因。它可能有一些不正确处理的错误数据。

答案 1 :(得分:1)

这听起来像是在使用全局对象/单例。如果其中任何一个相互依赖,你就会遇到麻烦。我会寻找你所有的全局变量并在每个变换器的构造函数中加入一个断点。听起来像一个全局的构造函数正在使用另一个全局,但第二个尚未构建。

最后,如果这不是原因,并且您的应用程序正在加载第三方dll,则可能会发生冲突。我记得曾经orbix和ms消息队列dll分类在一个之前被加载,如果它们被反过来加载,一切都有效。最后发现这个我删除了所有的东西,直到我刚刚离开一个空的主要,然后开始逐个添加东西,直到我发现问题。