Я думаю, это нормально.Некоторые ABI сгенерируют два конструктора для класса.Когда вы спрашиваете b X::X
, GDB обнаружит оба конструктора и установит две точки останова.(Извините, это не ваш случай)
«Было установлено несколько точек останова».Предупреждение также может быть дано для перегруженных методов (это ваш случай): http://www.delorie.com/gnu/docs/gdb/gdb_36.html
Некоторые языки программирования (особенно C ++) позволяют определять одно имя функции несколько раз, для применения в разных контекстах.,Это называется перегрузкой.Когда имя функции перегружено, `break function 'недостаточно, чтобы указать GDB, где вы хотите установить точку останова.
Для таких методов вы можете выбрать один метод, набрав его типы:
функция прерывания (типы)
Обновление: согласно тому же документу, GDB должен попросить пользователя выбрать некоторые из перегруженных методов:
GDB предлагает вамменю пронумерованных вариантов для различных возможных точек останова, и ждет вашего выбора с подсказками >'. The first two options are always
[0] cancel 'и `[1] all'.Ввод 1 устанавливает точку останова при каждом определении функции, а ввод 0 прерывает команду прерывания без установки каких-либо новых точек останова.
Например, следующий отрывок сеанса показывает попытку установить точку останова в перегруженном символе String::после.Мы выбираем три конкретных определения имени этой функции:
(gdb) b String::after
[0] cancel
[1] all
[2] file:String.cc; line number:867
[3] file:String.cc; line number:860
[4] file:String.cc; line number:875
[5] file:String.cc; line number:853
[6] file:String.cc; line number:846
[7] file:String.cc; line number:735
> 2 4 6
Breakpoint 1 at 0xb26c: file String.cc, line 867.
Breakpoint 2 at 0xb344: file String.cc, line 875.
Breakpoint 3 at 0xafcc: file String.cc, line 846.
Multiple breakpoints were set.
Use the "delete" command to delete unwanted
breakpoints.
(gdb)
UPDATE1: http://sourceware.org/gdb/onlinedocs/gdb/Ambiguous-Expressions.html#Ambiguous-Expressions говорит, что это меню можно включать и выключать (по умолчанию выключено):
установить несколько символов mode
Этот параметр позволяет настроить поведение отладчика, когда выражение является неоднозначным.По умолчанию режим установлен на все .Если команда, с которой используется выражение, допускает более одного выбора, то GDB автоматически выбирает все возможные варианты.
Когда для режима установлено значение ask , отладчик всегда использует меню при обнаружении неоднозначности.
Наконец, когда для режима установлено значение cancel отладчик сообщает об ошибке из-за неоднозначности, и команда прерывается.