Почему мой отладчик GDB устанавливает 2 точки останова? - PullRequest
1 голос
/ 05 апреля 2011

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

(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) 

1 Ответ

2 голосов
/ 05 апреля 2011

Есть несколько основных символов :) Возможно, посмотрите на 'контрольные точки информации' в gdb или

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 через предварительно обработанные источники:

find -name '*.c'    -print0 | xargs -0n1 -iQ cpp -I/usr/include/... -DDEBUG Q Q.ii
find -name '*.c.ii' -print0 | xargs grep -wI main

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...