3

我在 DebugMode 中运行我的程序,然后通过关闭主窗体退出它。

在输出窗口中,我可以看到以下消息:

Uninit : Still Alive 1The program "[1432] App1.exe: Managed (v4.0.30319)" was ended with code 0 (0x0).

我想知道“Uninit : Still Alive 1”是什么意思。

有人知道吗???我总是很害怕在某个时间点发生意想不到的事情,而“还活着”的消息对我来说听起来并不乐观。

感谢您的帮助!

4

1 回答 1

14

它是使用OutputDebugString()生成的诊断消息。它存在于您所依赖的 DLL 之一中。确切的含义需要解释,但“Uninit”是“Uninitialize”的缩写,即卸载 DLL 时发生的事情。而“Still Alive 1”可能意味着 DLL 的程序员对您在猛拉地板垫之前没有正确关闭他的组件感到恼火。

该消息缺少换行符(“\n”),这是程序员在使用 OutputDebugString 时犯的一个非常标准的错误。

找到执行此操作的 DLL 的两种基本方法。第一个是使用 Project + Properties,Debug 选项卡打开非托管调试,勾选“Enable native code debugging”复选框。DLL 卸载通知应靠近诊断消息。

更可靠的是使用 SysInternals 的 Process Explorer。选择您的进程并按 Ctrl+D 列出它已加载的 DLL。鉴于消息的质量,您可能可以跳过那些拥有 Microsoft 版权的消息。右键单击 DLL 并查看“字符串”选项卡以查看 DLL 中的字符串。找到它后,您应该知道谁拥有该 DLL 名称中的代码。询问他们如何正确关闭。

于 2014-04-18T00:41:30.093 回答