我使用建议的方法通过SetThreadName设置线程的名称。它工作正常,我看到线程视图工具窗口中的名称发生了变化。但是,我经常会在调试输出窗口中打印出一条异常消息。由于我有几个线程,我可能会收到其中的几条消息,但有时候我没有。示例消息:
First-chance exception at 0x75419558 (KernelBase.dll) in MyProgram.exe : 0x406D1388 (parameters: 0x00001000, 0x00E1EB70, 0x00000A40, 0x00000000).
虽然异常会被__except
块处理/忽略,但一切都没有问题,但它让我感到担忧。有没有解释为什么会发生这种情况,而且只是间歇性地发生?是否有其他方法可以避免消息,或者是否有某种方法可以将异常消息的输出抑制到调试输出?
注意:这似乎发生在所有版本的Visual Studio中 - 我已经测试过VC2010-2015RC。
答案 0 :(得分:0)
What is a first chance exception?
如果附加了调试器,则首先将任何抛出的异常提供给调试器。这就是为什么即使您使用__except(EXCEPTION_EXECUTE_HANDLER)
子句处理异常,它也会显示异常。调试器获得第一次机会来处理它。在这种情况下,似乎只是打印它接收它然后正常传递它。
要停用这些消息,您可以右键单击输出菜单并取消选中Exception Messages
。