1

我正在寻找有关 win32 异常“错误创建窗口句柄”的一些帮助。有时我们的程序(WinForms - C#)会抛出这个异常,有时窗口甚至会冻结,因此用户必须退出进程才能再次工作。

从有关此问题的许多其他线程中,我知道我应该寻找什么,但不确切地知道我们的程序很大的地方。所以我希望可能有一种方法来限制我必须检查的代码行......是否有任何工具可以帮助解决这个异常?

4

2 回答 2

2

简短更新:我解决了这个问题。

ProcDump 对我帮助不大,因为我从我们的日志文件中获得了几乎相同的信息。但是,我能够在我们的开发环境中重现该错误。感谢调试器并在任务管理器中显示用户对象计数,我找到了内存泄漏的来源 - 一个动态创建的未处理的 texbox。

再次感谢您的提示!

于 2013-10-25T09:13:18.800 回答
1

如果此问题发生在调试器内部,您可以设置调试器(我假设您使用 C# 时使用 Visual Studio?)以在抛出异常时中断。在您的情况下,您可能希望在 (I think) 上设置异常断点System.ComponentModel.Win32Exception

再次假设 Visual Studio 作为您的 IDE,“调试”菜单上的“异常...”项。这允许您告诉调试器在 a) 抛出特定异常或 b) 未处理时中断。

在 Common Language Runtime Exceptions 下,展开System.ComponentModel并启用 Throw 列中的复选框System.ComponentModel.Win32Exception

然后照常进行。如果在调试期间发生异常,它应该会闯入您的程序并允许您查看它发生的位置。

编辑:如果您无法在您的开发机器上重现该问题,请查看您是否能够设置目标机器以在发生崩溃时生成转储。一种方法是运行ProcDump。使用参数运行它以-e在发生异常时创建转储。然后你可以在牧场分析这个。

于 2013-10-17T12:14:32.797 回答