繁体   English   中英

如何找到Win32异常“错误创建窗口句柄”的源

[英]How to find source for win32 exception “error creating window handle”

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

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

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

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

再次感谢您的提示!

如果在调试器内部发生此问题,则可以设置调试器(在使用C#时将假定Visual Studio?)在引发异常时中断。 在您的情况下,您想在(我认为) System.ComponentModel.Win32Exception上设置一个异常断点。

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

在“公共语言运行时异常”下,展开System.ComponentModel ,然后为System.ComponentModel.Win32Exception启用“投掷”列中的复选框。

然后只要照常进行即可。 如果在调试期间发生异常,则应将其插入程序并让您查看发生的位置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM