2012-08-23 133 views
0

我有一个应用程序在C++与Visual Studio 2010中完成,它正在用OutputDebugStringW(大约每秒50次,这显然是很多)触发了很多调试信息。DebugView使我的应用程序崩溃

如果我打开关闭DebugView 3 ou 4次然后我的应用程序变得不稳定,并且崩溃或行为不正常。我已经尝试了与另一个应用程序发射相同数量的调试打印(同样在VS 2010中完成的C++),并且我经历了相同的行为,如果我尝试在另一台计算机上也是如此。这两台电脑都运行Windows 7 32位。

这些打印的长度被控制为不超过512个字符,所以我不认为有缓冲区溢出(OutputDebugStringW似乎限制为4kb字符串)。

我试过用Hoo Win Tail(这是一个类似于DebugView的软件)并且不会发生问题。

有没有人遇到过这个问题?

最好的问候,

喷气

+0

它如何崩溃?关于例外的任何细节导致? DebugView可能会使'OutputDebugString'调用处理时间更长,并使运行时行为分别受到影响。 –

+0

它崩溃的方式如下: 应用程序的通知区域图标被替换为无(透明图标),并且图标的工具提示文本被随机的字符替换。之后的软件完全崩溃,被冻结或者做了一些奇怪的状态机序列。 该软件的结构是一个状态机,它的设计非常慢(比如每5-10秒做一次),所以OutputDebugString的cpu过载不应该使其崩溃。 – Jet

回答

1

我会假设你有你的应用程序中(细微)的竞争条件,只有将自己暴露在你的程序在不同的“速度”运行。

DebugView will make your app run slower等引入了不同的时序。其他也捕获调试输出的工具在您的应用中不会出现这种行为,这可能与它们引入了某种不同(更快/更慢)时序的事实有关。