2009-10-28 3 views
1

Когда я создаю пакеты на Gentoo. Я получаю это предупреждение, что флаг «-ggdb3» может «разорвать пакеты».Как можно включить отладочные символы GDB 'break packages'?

Мне еще предстоит найти пример, когда это правда. Хотя однажды я нашел код, который сломался под разными настройками оптимизации, это отличается от включения отладочных символов.

Может ли кто-нибудь привести пример кода, который будет компилироваться без отладки символов, а не скомпилировать (или поступить неправильно каким-то другим способом во время выполнения) с ними?

ответ

1

В «старые времена» я построил целую Linux из системы Scratch, оставляя отладку для каждого отдельного двоичного файла. Конечно, установка была значительно больше, использование памяти было менее идеальным, но у меня никогда не было никаких проблем, как в компиляции, так и в последующем исполнении.

Трудно доказать отрицательный результат, и нельзя сделать это через анекдот, но год его запуска в качестве второго настольного/игрового сервера приведет меня к выводу, что это действительно не проблема.

Я думаю, что флаг, который вы получаете, является стандартным предупреждением, которое пакет даст в Gentoo, если вы установите флаги USE, с которыми он не был протестирован, или с которым он на самом деле не предназначен для установки. Пока вы знаете, что такое флаг ... и в этом случае вам кажется, что --- и вы не помещаете его в какой-либо «критически важный» параметр (т. Е. Вас обвиняют, если что-то пойдет не так) кажется безопасным чтобы игнорировать эти предупреждения.

+0

оставляя -Werror в вашем CFLAGS не вызывает никаких проблем, но это еще одна история ;-) –

+0

@Chris Я счастлив на FreeBSD сейчас, потому что я обнаружил, что Gentoo вызывает нет конца хлопот, но это уже другая история ...;) – Dmitri

1

У меня никогда не было провала теста (или, что еще хуже, пакета) из-за включения отладочных символов. Я был укушен ошибками оптимизации при работе с PPC.

Однако вы должны подумать над тем, что вы строите. Если исполняемый файл будет скопирован во что-то вроде initrd, вы, как правило, хотите его либо удалить (или скомпилировать без отладки символов), особенно если статически привязать.

+0

Что такое ppc? Вы не имеете в виду «платить за клик»? –

+0

@ Chris Huang-Leaver: http://refspecs.freestandards.org/LSB_1.3.0/PPC32/spec/book1.html (т. Е. PowerPC .. то, что придумали эти умные люди в Motorola)? –

+0

@tinkertim IC, единственный, о котором я могу думать, это http://stackoverflow.com/questions/768588/, который, я думаю, является проблемой компилятора с Solaris. –

-2

Иногда, когда вы включаете отладочные символы, это фактически изменяет код, который генерируется компилятором, и в этом случае всегда есть возможность перейти от «правильного кода» к «неправильному коду».

Я не знаю, какие конкретные изменения «-ggdb3» позволяет, но, возможно, об этом вас предупреждают.

+0

Это никогда не бывает для GCC, AFAIK – Hasturkun