Отладка
Last updated
Was this helpful?
Last updated
Was this helpful?
Для демонстрационных целей мы создадим программу с ошибками, в которой преднамеренно разыменовывается null ссылка, что вызовет ошибку сегментирования:
class Foo : Object {
public int field;
}
void main() {
Foo? foo = null;
stdout.printf("%d\n", foo.field);
}
Ошибка сегментирования
Ну, как мы будем отлаживать эту программу? Ключ -g говорит компилятору включить информацию о строках исходников в двоичный файл, --save-temps позволяет оставить временные С файлы:
$ valac -g --save-temps debug-demo.vala
Программы написанные в Vala можно отлаживать с помощью GNU Debugger - gdb. Так для gdb существуют различные графические интерфейсы, напр. Nemiver.
$ nemiver debug-demo
Примерный сеанс c gdb:
$ gdb debug-demo
(gdb) run
Запуск программы:
/home/valacoder/debug-demo
Программа получает сигнал SIGSEGV,
Ошибка сегментирования.
0x0804881f in _main () at debug-demo.vala:7
7 stdout.printf("%d\n", foo.field);
(gdb)