c++ - 抑制 MSVC 中 SetThreadName 异常的调试输出

标签 c++ multithreading exception visual-studio-2013 visual-studio-debugging

我正在使用建议的方式通过 SetThreadName 设置线程的名称.它有效,我看到线程 View 工具窗口中的名称发生了变化。但是,我经常在调试输出窗口中打印出一条异常消息。由于我有多个线程,我可能会收到其中的几条消息,但有时我什么也没有收到。示例消息:

First-chance exception at 0x75419558 (KernelBase.dll) in MyProgram.exe : 0x406D1388 (parameters: 0x00001000, 0x00E1EB70, 0x00000A40, 0x00000000).

尽管 __except block 应该处理/忽略异常,并且一切继续没有问题,但它让我担心。是否有解释为什么会发生这种情况,并且只会间歇性发生?是否有其他方法可以避免出现该消息,或者是否有某种方法可以抑制将异常消息输出到调试输出?

注意:这似乎发生在所有版本的 Visual Studio 中 - 我已经测试过 VC2010-2015RC。

最佳答案

What is a first chance exception?

当你附加调试器时,抛出的任何异常都会首先提供给调试器。这就是为什么它显示异常,即使您使用 __except(EXCEPTION_EXECUTE_HANDLER) 子句处理异常。调试器得到第一次机会来处理它。在这种情况下,它似乎只是打印它收到它然后正常传递它。

要禁用这些消息,您可以右键单击输出菜单并取消选中 Exception Messages

关于c++ - 抑制 MSVC 中 SetThreadName 异常的调试输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627988/

相关文章:

c++ - 带互斥量的多线程输入不平滑(如预期)

java - 使用 Executors.newFixedThreadPool() 的内存泄漏

multithreading - 仅按需从 TThread 动态初始化和调用 LoadLibrary 一次

尝试设置值 jms/Topic 时出现异常 null

java - 你在哪里定义spring bean配置文件

java - ArrayAdapter<String> 中的 android UnsupportedOperationException

c++ - C++03 中默认初始化和值初始化的区别?

c++ - 如何使用 QSqlQueryModel 在 QTableView 中显示多个选择的结果

c++ - 动态数组和普通数组的区别

c++ - 为什么套接字在多线程时不起作用?