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); 时崩溃且没有错误消息的主要内容,如果未能解决你的问题,请参考以下文章
在 Spark-on-Yarn 中配置 Executor 和 Driver 内存
更改 GNU 编译器中的 -g 标志使 C++ 可执行 [重复]