Программа Debug С++ в Linux
Я написал простую программу на С++, например:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello.";
return 0;
}
Теперь я хочу отладить его. Итак, какова будет команда для этого, чтобы мой контроль попадал в каждую строку?
Ответы
Ответ 1
Вы можете использовать gdb
для этого:
$ gdb hello
Это запустится gdb
и предложит вам, что делать дальше. Команда next
выполняет одну строку источника и останавливается на следующей строке.
Я нашел базовый учебник GDB, который может быть полезен.
Ответ 2
Не забудьте скомпилировать исходный код с помощью опции -g.
Например: g++ -g helloWorld.cc
Это создаст исполняемый файл a.out.
Вы сможете отладить ваш exe файл a.out с помощью команды gdb ./a.out
.
Еще один инструмент, который вы можете использовать ddd в основном графический интерфейс для gdb.
Удачи.
Ответ 3
Я всегда думал, что emacs предоставил удобный пользовательский интерфейс для gdb...
например.
- % g++ hello.cc -g -o привет
- emacs hello.cc
- [В Emacs] Escape-x gdb
- Emacs скажет: "Запустите gdb (вот так): gdb".
- Добавьте свое двоичное имя ( "привет" ). (Например, "Запустить gdb (например, это): gdb hello".)
- Перейдите в буфер hello.cc.
- Используйте команду emacs 'gud-break', чтобы установить точку останова в gdb из вашего буфера hello.cc. (Обычно привязывается к "пространству C-x".)
- Перейдите в буфер * gud-hello *.
- Введите "run" в приглашении (gdb).
- Используйте [ N] Далее или [ S] Шаг. Или [ C] Продолжить. [ BT] Обратный путь также полезен.
- Обратите внимание, что происходит с маленьким треугольником в крайнем левом столбце вашего буфера hello.cc.
(Это должно быть достаточно, чтобы вы начали. Emacs - emacs, всегда есть больше возможностей...)
Ответ 4
Если вам нужен удобный для пользователя отладчик, вы можете использовать Kdbg, который в основном является интерфейсом gdb для KDE. Возможно, это не так сильно, как ddd, но проще начать с.
Ответ 5
В курсе программирования на C++, который я сделал в Швеции, была часть лаборатории об отладчике GNU. Я никогда не использовал его, но здесь есть статья, поясняющая основное использование, насколько я помню, в главе 2.