如题,在嵌入式Linux的C++ 开发中调用嵌入式mysql库函数,在一个线程中执行上位机数据库中存储过程,在执行存储过程前打出了日志,发现线程执行数据库存储过程后没有任何日志输出,稍候其它线程信息显示嵌入式设备有短暂的网络掉线情况。猜测可能在执行上位机数据库的存储过程查询信息过程中,网络掉线,因为在执行数据库存储过程时,网络掉线几率很小,我能通过在执行存储过程的代码外层添加try catch()捕获异常么?
现在怀疑因为执行上位机数据库的存储过程时,网络掉线,导致存储过程的执行线程直接崩掉了(系统和应用程序的其它线程没有影响,正常情况下存储过程的执行线程会循环输出日志信息,但是日志显示刚好执行存储过程后,该线程再也不会输出任何日志信息了,随后几秒后其它线程的日志显示与上位机网络掉线。数据库连接初始化时有设置5秒超时,应该不会是数据库连接进入死循环等待上位机数据库存储过程的返回值的情况)。

解决方案 »

  1.   

    怀疑你的程序出现了异常了,导致设备复位了。
    嵌入式调试,这种情况,要异常检测关闭,看看你的平台是怎么实现的,一般都是自己做的。
    实在不行用GDB跟踪一下,看看哪一行挂掉的
      

  2.   

    try需要throw配套的
    mysql库如果没有throw机制,加上try也没用
    网络掉线,会导致mysql存储过程调用有问题,这种情况多半在你的程度中加强检查就可以解决了
    具体点说就是每一个跟mysql交互的语句,写的时候都要多根弦,万一这一句调用出错了,断线了,没得到想要的结果怎么办?
    需要加入怎么样的检查机制?需要加入怎么样的处理机制?