C++ 程序在执行 con = driver->connect(host, user, pass); 时崩溃且没有错误消息

Posted

技术标签:

【中文标题】C++ 程序在执行 con = driver->connect(host, user, pass); 时崩溃且没有错误消息【英文标题】:C++ program crashes with no error messages when it executes con = driver->connect(host, user, pass); 【发布时间】:2015-09-25 12:07:17 【问题描述】:

我用 C++ 编写了一个程序,该程序通过 mysqlcppconn 6.1 在 xampp 上运行的数据库中连接到 MySQL(我使用的是 windows)。发生这种情况,当尝试连接到 MySQL 时,程序崩溃并且没有错误消息并被 Windows 关闭,让我不知道发生了什么。

# Line that generates the error:
con = driver->connect("tcp://localhost:3306", "root", "root");

我读到这是 MySQL 连接器与 C++ 的旧错误,但没有找到任何可行的解决方案(除了重新编译这个或那个)。

有什么办法可以解决这个错误?

申请代码: https://dl.dropboxusercontent.com/u/85576999/DB8/dbWriteWin.h

【问题讨论】:

即使是 try/catch 也无法阻止应用程序崩溃。 【参考方案1】:

来自共享的代码,

   sql::Driver *driver;
   //driver = get_driver_instance();   it is commented out ?????
   try 
        con = driver->connect("tcp://localhost:3306", "root", "root");
     catch (SQLException e)
        ev << e.what() << "\n";
    

*driver未初始化,用于调用connect方法。

【讨论】:

驱动初始化被注释掉,因为它遇到另一个错误(未定义对get_driver_instance的引用)。 由于 *driver 没有被初始化,它会指向任何地方并且 connect 方法可能会访问 this 指针和行为未定义它可能会崩溃或运行一些垃圾代码 ***.com/questions/5360501/… 提供有关使用未初始化指针对象的更多信息

以上是关于C++ 程序在执行 con = driver->connect(host, user, pass); 时崩溃且没有错误消息的主要内容,如果未能解决你的问题,请参考以下文章

串口为啥自动打印数据

在Ubuntu上运行C++程序

在 Spark-on-Yarn 中配置 Executor 和 Driver 内存

更改 GNU 编译器中的 -g 标志使 C++ 可执行 [重复]

c++从freopen(“CON”,“w”,stdout);回来之后,就不换行了,求大神看一下

C++再谈vscode界面调试C++程序(linux) - 知识点目录