【问题标题】:Invisible runtime errors in threads线程中不可见的运行时错误
【发布时间】:2011-07-14 14:51:55
【问题描述】:

我正在为嵌入式 Linux 编写 C++ 应用程序。我有一个问题,即在主线程以外的线程中发生的运行时错误(例如未处理的异常和分段错误)未显示在控制台中。在这种情况下,我的应用程序将突然终止而没有任何错误消息。有什么方法可以将错误消息发送到父主线程的默认控制台? (我的嵌入式 linux 不支持gdb

【问题讨论】:

  • 将它们写入日志? - 你可以互斥一个大字符缓冲区,让线程写入它,将它转储到日志中。
  • 我可以想象编写一个线程包装器来捕获unhandled exceptions 并将它们写入日志文件,但是应该如何将真正的runtime-errorssegmentation faults 捕获/转储到日志文件中?
  • @Dudero:Linux 使用一种称为信号处理的机制,通过它可以捕获各种硬件错误。
  • @DeadMG:谢谢,这听起来很有趣,我会用谷歌搜索它:)

标签: c++ multithreading embedded-linux runtime-error


【解决方案1】:

您不应该让异常传播到您的线程函数之外。通常,您将在线程函数的主体周围有一个捕获所有异常处理程序。如何处理这些异常取决于您自己。

【讨论】:

  • 谢谢你,我同意你的例外情况,应该总是有一个catch(...)-block 来防止离开线程函数。
【解决方案2】:

我发现这些runtime-errors显示在syslog文件中,完全符合我的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 1970-01-01
    • 2019-09-13
    • 2016-03-06
    相关资源
    最近更新 更多