【发布时间】:2015-05-26 21:45:59
【问题描述】:
我正在开发一个与外部 ODBC 数据库连接的应用程序。 当我在 Qt 上运行它时,一切正常,但是当我尝试独立打开时,它总是在 m_db->open() 上崩溃。
当应用程序通过此错误崩溃时:
Segmentation fault (core dumped)
代码如下:
m_db = new QSqlDatabase(QSqlDatabase::addDatabase("QODBC","edb"));
m_db->setDatabaseName(m_line);
m_db->open(); // <-// app crash here!
地点:
m_line = "Driver=/opt/sqlanywhere12/lib64/libdbodbc12.so;CommLinks=tcpip(Host=ip;port=port);ServerName=db;DatabaseName=db;Uid=uid;Pwd=psswd;"
有人知道吗?
我正在运行 Ubuntu 14.04 64 位。 谢谢,
编辑
好吧,经过更多测试,如果我从 m_line 变量中删除驱动程序配置,它似乎停止崩溃,但显然,它停止工作......
EDIT2
从 Qt 创建者配置自定义运行后,它说断点是反汇编程序上的 0x7ffff6a777b9。什么意思?
【问题讨论】:
-
既然
m_db是一个指针,那么它的值是多少呢?它是否指向一个有效的实例?为什么是指针?为什么不使用对象实例(不是指针)编写一个简单的测试应用程序,以验证该简单应用程序是否有效? -
是的,它是一个有效的指针。我添加了一段代码。