如何查找 win32 异常“创建窗口句柄时出错”的源
本文关键字:窗口句柄 创建 出错 的源 异常 何查找 查找 win32 | 更新日期: 2023-09-27 18:35:42
>我正在寻找有关 win32 异常"创建窗口句柄时出错"的一点帮助。我们的程序(WinForms - C#)不时抛出此异常,有时窗口甚至冻结,因此用户必须启动进程才能再次工作。
从关于这个问题的许多其他线程中,我知道我应该寻找什么,但不完全是在哪里,因为我们的程序非常大。所以我希望有一种方法可以限制我必须检查的代码行......是否有任何工具可以帮助解决此异常?
简短更新:我解决了这个问题。
ProcDump对我没有多大帮助,因为我从我们的日志文件中得到了几乎相同的信息。但是,我能够在我们的开发环境中重现该错误。多亏了调试器并在任务管理器中显示用户对象计数,我找到了内存泄漏的来源 - 一个动态创建的未处置的 texbox。
再次感谢您的提示!
如果此问题发生在调试器内部,则可以将调试器(我将假设Visual Studio,因为您使用C#?)在引发异常时中断。 在您的情况下,您可能希望在(我认为)System.ComponentModel.Win32Exception
上设置异常断点。
再次假设Visual Studio作为您的IDE,在"调试"菜单上是"异常..."项目。 这允许您告诉调试器在特定异常 a) 引发或 b) 未处理时中断。
在"公共语言运行时异常"下,展开"System.ComponentModel
",然后启用"引发"列中System.ComponentModel.Win32Exception
复选框。
然后照常进行。 如果在调试期间发生异常,它应该会闯入您的程序,并允许您查看它发生的位置。
编辑:如果无法在开发计算机上重现问题,请查看是否能够将目标计算机设置为在发生崩溃时生成转储。 执行此操作的一种方法是运行 ProcDump。 使用 -e
参数运行它,以便在发生异常时创建转储。 然后你可以在牧场分析一下。