Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CodeBlocks (C::B) игнорирует написанный код, Выборочно исполняет написанный код 
:(
    Опции темы
ivanstanislavovich
  Дата 11.8.2011, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.8.2007
Где: Укр.Кривой Рог

Репутация: нет
Всего: нет



Используется: Ubuntu 11, CodeBlocks 10.05, wxWidgeth, SQLite.
CodeBlocks игнорирует часть написанного кода даже при отладке шагами:
Код

void lllDialog::OnAbout(wxCommandEvent &event)
{
   wxMessageBox(wxT("error open")); // ШАГ 1
    
    sqlite3 *db ;
    char *errmsg;

    sqlite3_open("./db", &db) ;
    sqlite3_exec(db, "select * from test;", callback, NULL, &errmsg);
     
    wxMessageBox(wxT("opened")); // ШАГ 2
}

(Веду тсчетные попытки завести SQLite под C++ с IDE C::B)
Т.е. с шага 1 переходи на второй, пропуская все, что между ними. Есть какие-то идеи, комментарии по этому поводу?
PM MAIL   Вверх
bsa
Дата 11.8.2011, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



отключи оптимизацию (в настройках компилятора должен быть ключ -O0, а -O1, -O2... - это оптимизация, из-за нее возникают такие проблемы при отладке)!!!
PM   Вверх
ivanstanislavovich
Дата 11.8.2011, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.8.2007
Где: Укр.Кривой Рог

Репутация: нет
Всего: нет



Цитата(bsa @ 11.8.2011,  22:04)
отключи оптимизацию (в настройках компилятора должен быть ключ -O0, а -O1, -O2... - это оптимизация, из-за нее возникают такие проблемы при отладке)!!!

Нашел настройки такие (Settings->Compile and debuging), но там не включена ни одна оптимизация, даже -O, -O1.
Project build options задан только "Produce debugging symbols [-g]".
PM MAIL   Вверх
afiskon
Дата 12.8.2011, 07:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: 1
Всего: 4



Может, отладчику взрывает мозг callback? Попробуйте вставить между sqlite3_ вывод чего-нибудь. И вообще не помешало бы для очистки совести этот lllDialog::OnAbout через IDA Pro прогнать.

Кстати, мне где-то попадались ОО-оболочки вокруг SQLite, даже вроде видел класс wxSQLite. Это не конкретно к вашему вопросу - просто использовать Си-функции в C++ коде - не комильфо.
PM MAIL WWW   Вверх
ivanstanislavovich
Дата 12.8.2011, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.8.2007
Где: Укр.Кривой Рог

Репутация: нет
Всего: нет



afiskon, спасибо за ответ. 
Код

   wxMessageBox(wxT("error open"));
    sqlite3 *db ; // NO STEP IN
       sqlite3_open("./db", &db) ; // NO STEP IN
    int x = 1+2;
    wxString t ;
    t.Printf(wxT("New Message NO: %d"),x);
    wxMessageBox(t);
    wxMessageBox(wxT("opened"));

Все с комментарием "NO STEP IN" не выполняется. 

Цитата

lllDialog::OnAbout через IDA Pro 

К сожалению, я не достаточно развит для разбора дизассемблированного кода, по этому лишь положу такой во вложении.
Цитата

оболочки вокруг SQLite

Я такую тоже видел, даже пробовал установить/скомпилировать. Но мои потуги увенчались провалом.
Цитата

просто использовать Си-функции в C++ коде

Простите за не грамотность, но о каких функциях вы говорите ? "wxSqlite3_Open" ? А как вы ее насквозь видите ? 

Может поможе в разрешение проблемы: 
Код

#define sqlite3_open
#define sqlite3_exec

объявлено в CPP файле. Без них выводил сообщение об ошибке, на функциях sqlite3:
Цитата

undefined reference to sqlite3_open

с включенной "include <sqlite3ext.h>", в дополнение к "include <sqliter3.h>"
Цитата

sqlite3_api was not declared in this scope



Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  Disassembly.txt 4,93 Kb
PM MAIL   Вверх
asmdzen
Дата 12.8.2011, 08:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



Цитата(ivanstanislavovich @  12.8.2011,  08:37 Найти цитируемый пост)
#define sqlite3_open
#define sqlite3_exec

объявлено в CPP файле

т.е. это не реальные функции а какие то макросы? так дела не делаются )) может просто следует нужные библиотеки подключить вместе с хидерами?
в IDA листинге не вижу никаких следов от вызова sql функций.
PM MAIL   Вверх
ivanstanislavovich
Дата 12.8.2011, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.8.2007
Где: Укр.Кривой Рог

Репутация: нет
Всего: нет



Цитата

т.е. это не реальные функции а какие то макросы? так дела не делаются )) может просто следует нужные библиотеки подключить вместе с хидерами?


Есть исходники sqlite, могу выложить. Не знаю таких библиотек, по примерам делал - не подходили или не существовали. 
Ох, как я намучался за эту неделю с этим wxsqlite. Не в жалобу, а к тому, что брал явный код примера - и он не работал. При том что версии и прочее было такое же. В итоге шнырял по Интернету, дабы найти хоть какое-то решение. 

Цитата

в IDA листинге не вижу никаких следов от вызова sql функций.

это значит, что часть кода просто игнорируется, или что я не верно что-то сделал?

Это сообщение отредактировал(а) ivanstanislavovich - 12.8.2011, 09:09
PM MAIL   Вверх
asmdzen
Дата 12.8.2011, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



ivanstanislavovich, можете выложить хидер и cpp где описан этот OnAbout(т.е. класс lllDialog)? можете оставить только то что связанно именно с sql.
PM MAIL   Вверх
ivanstanislavovich
Дата 12.8.2011, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.8.2007
Где: Укр.Кривой Рог

Репутация: нет
Всего: нет



asmdzen, я благодарен Вам за оказание помощи. 

Во вложении запрашиваемое. 
Исходный код приложения - чистый проект с одной формой, генерируемый автоматически при создании проекта wxWidgeth. Я лишь изменил код на кнопке About и расширил шапку в CPP файле.

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  ______________.zip 86,09 Kb
PM MAIL   Вверх
ivanstanislavovich
Дата 12.8.2011, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.8.2007
Где: Укр.Кривой Рог

Репутация: нет
Всего: нет



а в настройках компилятора можно задать, что-то вроде "пропускать код С" ?
PM MAIL   Вверх
asmdzen
Дата 12.8.2011, 10:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



Цитата(ivanstanislavovich @  12.8.2011,  09:27 Найти цитируемый пост)
Я лишь изменил код на кнопке About и расширил шапку в CPP файле.

это определенно не правильно, я никогда с sql не работал, но в sqlite3.h который Вы показали присутствуют только сигнатуры функций, т.е. следует подключить какие-то библиотеки по любому.
Почитайте внимательно туториал по sql откуда взяли код (откуда sqlite3.h), там должно быть написано что именно нужно подключать.
(так понимаю с wxSqlite Вы так же работали ))
PM MAIL   Вверх
ivanstanislavovich
Дата 12.8.2011, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.8.2007
Где: Укр.Кривой Рог

Репутация: нет
Всего: нет



компилятор "GNU GCC Compiler"
при компиляции выдает замечания: на стрке sqlite3_open:
Цитата

warning: left-hjand operand of comma has no effect

PM MAIL   Вверх
asmdzen
Дата 12.8.2011, 10:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



потому что вот это
Цитата(ivanstanislavovich @  12.8.2011,  08:37 Найти цитируемый пост)
#define sqlite3_open

превращает вызов 

Цитата(ivanstanislavovich @  12.8.2011,  08:37 Найти цитируемый пост)
sqlite3_open("./db", &db) ;

в
Код

("./db", &db) ;


PM MAIL   Вверх
ivanstanislavovich
Дата 12.8.2011, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 16.8.2007
Где: Укр.Кривой Рог

Репутация: нет
Всего: нет



asmdzen, я знаю как подключать библиотеки в VS под Windows, но как это делать в CodeBlocks под Ubuntu - не знаю, мне кажется все пересмотрел.
Примеры по wxSqlite и sqlite3 говорят, что нужно включать их в проект или компилировать снаружи, во всяком случае я так понял, и будет все ок. Но оба варианта заканчиваются разными обильными ошибками: не находятся другие библиотеки или еще что. Этот вопрос, с компиляцией, еще не разрешен. 
Да и вообще, сложилось впечатление, что мир отличный от Microsoft и Visual Studio очень слабо документирован и поддержуется. Уже неделю воюю: поставить IDE (CodeBlocks), настроить ее, включить интерфейс (wxWidgeth), подключить базу. На каждый шаг по 2-3 дня. С базой уже и дольше. 

Добавлено через 2 минуты и 10 секунд
Цитата

потому что вот это ... превращает вызов ... 

Спасибо. Мне еще предстоит многому научиться.
PM MAIL   Вверх
asmdzen
Дата 12.8.2011, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: нет
Всего: 5



если wxwidgets уже скомпилены то можно вернутся к wxsqlite, думаю легче будет с ними работать, можно ведь подключить нужную библиотеку сразу.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1359 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.