2011-04-05 9 views
1

Это нормально? Клянусь, до недавнего времени устанавливал только 1 точку разрыва. Как сделать это, только установить точку останова в моем рабочем файле, а не в исходном файле.Почему мой отладчик gdb устанавливает 2 точки останова?

(gdb) break main 
Breakpoint 1 at 0x1dbf 
Breakpoint 2 at 0x1ed8: file arrays.c, line 17. 
warning: Multiple breakpoints were set. 
Use the "delete" command to delete unwanted breakpoints. 
(gdb) 
+0

возможного дубликата [БГД предупреждения: многократные контрольные точки были установлены] (http://stackoverflow.com/questions/7330364/gdb-warning-multiple-breakpoints-were-set) – osgx

ответ

2

Есть несколько основных символов :) Может быть, посмотреть на «контрольных точек» Ставки в БГД или

objdump -C -t myprog 

понять, почему/где.

Используйте cscope для интерактивного поиска деклараций.

ctags -R . && grep -w main tags 
[ -x /usr/bin/vim ] && vim +'tj main' 

Должно быть полезным, а если у вас есть Ctags (и возможно, VIM) установлен

Если все остальное терпит неудачу, перебор grep -RIw main . должен работать. Если даже это не удается, вы должны столкнуться с очень странным внешним заголовком #defines или даже с (статической) библиотекой с излишним основным символом. Для перебора для main идентификатора через препроцессированные источники:

(заменить -I/usr/include/... -DDEBUG с соответствующим препроцессором определяет)

Смежные вопросы