在上一篇文章中,我们讲到了如何使用qt的驱动源码编译mysql的驱动动态库。这次呢,咱们来彻底解决可执行程序找不到Mysql驱动的问题
认识Linux下的strace指令
按照 strace 官网的描述,strace 是一个可用于诊断、调试和教学的 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。
strace 底层使用内核的 ptrace 特性来实现其功能。
在运维的日常工作中,故障处理和问题诊断是个主要的内容,也是必备的技能。strace 作为一种动态跟踪工具,能够帮助运维高效地定位进程和服务故障。它像是一个侦探,通过系统调用的蛛丝马迹,告诉你异常的真相。
关于strace的更多使用方法,大家可以自行百度。这里就不多赘述。
使用strace来查看程序的系统调用行为
strace {可执行程序}
通过该方式执行我们加载驱动错误的程序,然后触发访问数据操作:
可以看见,程序会在相关的路径下寻找驱动库,如果遍历了这些目录都找不到的话,就会出现后续的错误提示!
接下来,当然是把我们已经编译好的libqsqlmysql.so拷贝到这些目录中的一个:
cp {libqsqlmysql.so} /root/qmini-server/bin/sqldrivers/
好了,接着再次启动程序,你会发现问题已经解决!当然,大家可以举一反三,很多类似的加载动态库的问题呢,你都可以通过strace的方式来观察程序的行为,来具体问题,具体分析!谢谢!