【问题标题】:Checking program for crashes检查程序是否崩溃
【发布时间】:2013-07-18 19:04:31
【问题描述】:

我正在编写一个程序,它通过 CUTE 库进行单元测试,并且有一个函数,如果程序在调用它时崩溃,则需要检查它。
我已经尝试过try-catch 块,例如:

try 
    {
      myfunc();
    }
catch(...)
    {
    } 

但这只是处理异常并且在没有调用异常时没有用(即abort())。
那么有没有办法检查是否有崩溃响应。通知我崩溃发生的位置(行号,...)?

【问题讨论】:

  • 试试这个,通过处理 SIGABRT stackoverflow.com/questions/3910865/c-abort-override
  • 您想在崩溃发生之前就知道崩溃发生在哪里,防止程序崩溃?你在写什么超人计划或波斯王子时间机器?
  • 好吧,我真的想错了。我想以某种方式让函数崩溃“安全”,使我能够在之后收到一条消息,但在再次考虑这一点后,我意识到这是不可能的。但感谢您的宝贵时间。

标签: c++ unit-testing crash try-catch


【解决方案1】:

通过处理 SIGABRT。或者也许通过 atexit 函数注册你的处理程序(另见 c++ abort override)

【讨论】:

  • 谢谢,但您似乎误会了我的意思。我的意思是我想确保程序不会崩溃,abort() 问题只是一个例子。
  • 当你处理 SIGABRT 时,你会避免默认行为,即杀死程序
  • 我的意思是同样你可能想要处理其他信号,如 SEGV 等
  • @user1612880:实际上没有被视为犯罪;只是挑剔;)
【解决方案2】:

只需在 IDE 中使用调试器即可。或者,使用 GDBValgrind 等调试工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多