Не могу сделать точку останова в GDB

Я использую openSUSE в качестве моей ОС и GDB 7.5. Я хочу отлаживать свои программы с помощью gdb, с точками останова. Но когда я делаю точку останова, а затем запускаю свою программу, GDB сообщает мне следующее:

Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".cpp"

То же самое во всех моих программах. Кроме того, при запуске до точки останова программа вообще не останавливается. Кто-нибудь может сказать мне, что не так?

Я загружаю последнюю версию GDB и устанавливаю ее, прежнее сообщение исчезло, но при запуске GDB оно говорит мне, что:

warning: Could not load shared library symbols for linux-gate.so.1. Do you need "set solib-search-path" or "set sysroot"?

как решить эту проблему?

1

Решение

В gdb 7.5 существует известная ошибка, из-за которой отладчику не удается проанализировать спецификацию строк, когда имя исходного файла начинается с десятичной цифры. Увидеть это сообщение для деталей.

Попробуйте переименовать файл и обновить GDB из вашего репозитория. Если ошибка не устранена, сообщите об этом в службу поддержки дистрибутива.

Посмотреть пример сеанса из сообщение об ошибке представлен gdb Bugzilla.

(gdb) b 3
Breakpoint 1 at 0x4004c3: file 2.c, line 3.
(gdb) r
Starting program: /home/teawater/tmp/a.out
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
0

Другие решения

Я использую «B + белье»

Это определяет точку останова относительно текущей строки, смотри als Указание местоположения. С кодом из вашего комментария ниже, будет работать следующее:

$ gdb ./main
(gdb) b +5
Breakpoint 1 at 0x40139c: file main.cpp, line 6.
(gdb) run
[New Thread 1528.0x1930]

Breakpoint 1, main () at main.cpp:5
5           while(scanf("%d%d",&a,&b)!=EOF)

Если нет веских причин для указания относительных номеров строк, я предлагаю использовать абсолютные номера строк или имена функций:

(gdb) b main
Breakpoint 1 at 0x401395: file main.cpp, line 3.
(gdb) b main.cpp:6
Breakpoint 1 at 0x40139c: file main.cpp, line 6.
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector