РЕДАКТИРОВАТЬ: С тех пор я перестал использовать std :: strings в качестве аргументов этих функций, и проблемы исчезли. Кажется, это серьезная ошибка, связанная с временем жизни и областью действия строки. Хотелось бы, чтобы я понимал, что происходит немного лучше, но хотел бы оставить еще одну крошку для тех, кто может бороться с подобными аномалиями. / Edit
Итак, я пытаюсь написать процедуру доступа к базе данных с использованием коннектора MySQL C ++ (созданного из исходного кода) и получаю аномальное завершение в следующем месте кода:
//Change the active table and populate the member TableInfo object
void DatabaseInterface::ChangeTable(string tableName)
{
string sqlString;
int numFields;
int numRecords;
//Crash in this call
connection->setSchema(tableName);
//More after this, but we never get here anyway...
После завершения программы сообщение в консоли:
warning: .dynamic section for "/lib/libnsl.so.1" is not at the expected address
warning: difference appears to be caused by prelink, adjusting expectations
[Thread debugging using libthread_db enabled]
[New Thread 0xb7fecb90 (LWP 23590)]
[Thread 0xb7fecb90 (LWP 23590) exited]
Traceback (most recent call last):
File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_string
return self.val['_M_dataplus']['_M_p'].string (encoding, length = len)
RuntimeError: Error reading string from inferior: Input/output error
Эта последняя RuntimeError, похоже, указывает на то, что в функцию указывается параметр nulled, и, переходя к следующему коду, я вижу, что адрес не выделяется. Отладчик видит значение, но место в памяти, кажется, не существует. Фактически, попытка просмотреть расположение переменной в окне памяти приводит к ошибке.
bool ControlInterface::GenerateCmdSet()
{
int nRecords;
int nFields;
string sqlString;
string cardCmdTable;
cardCmdTable = "card_command";
dbInterface.ChangeTable(cardCmdTable);
Возможно ли, что у меня возникла проблема с конфликтом библиотек или отсутствующей библиотекой? Я относительно новичок в Linux, и мне трудно это оценить, борясь с дистрибутивами, вкусами, зависимостями и т. Д.