Устаревшие функции в PHP 5.5.x
Исходное расширение MySQL теперь устарело и будет генерировать ошибки E_DEPRECATED
при подключении к базе данных. Вместо этого используйте расширения ** MYSQLi или PDO_MySQL . **
Синтаксис:
Кроме того, замените все mysql_*
выполняет функцию mysqli_*
вместо
Вам нужно отключить auto-solib-add. В обычном приглашении gdb вы должны ввести:
(gdb) set auto-solib-add off
В Qt Creator в разделе Параметры-> Отладчик-> Gdb вы можете указать сценарий запуска Gdb. Создайте файл с командой "set auto-solib-add off" и затем установите сценарий запуска Gdb для этого файла.
Может быть, не совсем идеальное решение этого вопроса, но, возможно, это поможет исключить каталоги, в которых ваш проект не (т.е. сторонние библиотеки, системные заголовки (например, STL) и т. Д.). Если это так, взгляните на https://stackoverflow.com/a/31629136/5155476 и https://stackoverflow.com/a/42721326/5155476 . Первый позволяет вам указывать каталоги (и все подкаталоги), которые нужно пропустить при переходе по шагам во время работы GDB (так что вы можете изменить набор в любое время), но он требует от вас сборки GDB. Последний допускает ту же функциональность, но предварительно настроенную перед запуском GDB, и не требует сборки GDB.
Обновление после уточнения комментария:
В gdb вы можете указать, в каких исходных каталогах будет производиться поиск - если он не может их найти, он не сможет войдите в них.
Для того, чтобы gdb вводил исходные файлы библиотек qt, он должен знать, где они находятся - вероятно, что qt-creator сообщает gdb, где они находятся, когда запускает отладчик. Посмотрите вокруг qt-creator на предмет сценария запуска gdb - они могут быть указаны там.
Если они не указаны в сценарии запуска, и gdb самостоятельно находит исходные файлы, вы должны иметь возможность изменить запуск gdb сценарий для очистки любых каталогов с помощью команды directory
(синтаксис и т. д. см. по ссылке выше).
Вы также можете просмотреть консоль gdb, выбрав «Отладка -> Представления -> Gdb»
Требуемая функция (как описано в rpg) недоступна в GDB
, и ИМХО было бы трудно использовать, если бы она была реализована.
Аналогичное, но более простая в использовании функция fstep
предлагается для GDB
. Дано:
foo((string("Hello") + string(" World!)).c_str());
fstep
пропустит все вызовы в текущей строке, кроме последней (таким образом, пропуская строковые конструкторы, operator + ()
и c_str ()
и переход только в foo
).
Это тоже не было реализовано, но, вероятно, будет через пару месяцев (это очень полезно для отладки C ++
) .
Между тем, вы можете приблизить эту функцию, установив временную точку останова:
(gdb) list
1 #include <string>
2 #include <iostream>
3 using namespace std;
4
5 void foo(const char *s)
6 {
7 cout << s << endl;
8 }
9
10 int main()
11 {
12 foo((string("Hello") + string(" World!")).c_str());
13 return 0;
14 }
(gdb) b main
Breakpoint 2 at 0x8048901: file t.cc, line 12.
(gdb) run
Breakpoint 1, main () at t.cc:12
12 foo((string("Hello") + string(" World!")).c_str());
(gdb) tb foo
Breakpoint 3 at 0x80488ca: file t.cc, line 7.
(gdb) c
foo (s=0x804a1f4 "Hello World!") at t.cc:7
7 cout << s << endl;
(gdb) q