![]() |
|
|
![]()
|
|
| Lotrex |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 9.2.2006 Где: Казань Репутация: нет Всего: 3 |
Точнее, код одной функции помещается в exe-файл либо дважды, либо.. черт его знает, что происходит..
Написал я один тест для проверки одного класса. Вся эта бодяга компилилась в mingw командой gcc -c -O0 -g3 -Wall. Все исходники прилагаются в архиве вот тут: http://jamwarrior.narod.ru/sources/test.tar.gz (хотел пристыковать архив к сообщению - не получилось Когда я зашел в gdb и выполнил команду info functions, сред и прочих сообщений были следующие:
Что, по две одинаковых функции линкер запихнул в exe-шник? Дабы прояснить данный вопрос, я набрал:
Ну тут ладно, пока усе номално. После этого решил набрать:
Тута у меня волосы на голове зашевелились... |
||||||
|
|||||||
| threef |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: нет Всего: 10 |
Может в этом все дело - начало и конец блока ? |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: нет Всего: 23 |
Lotrex, используй пространства имён (namsepaces).
|
|||
|
||||
| Lotrex |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 9.2.2006 Где: Казань Репутация: нет Всего: 3 |
Народ, видимо не понял, в чем дело... Или я не понял, при чем тут namespaces... Со строкой 26 пример не показателен, поскольку там стоит просто пустой конструктор, а со строкой 27 файла ifiles.cpp, выглядящей так:
все абсолютно так же - при вызове двух разнотипных команд об одной и той же функции выдается разная информация. Странно то, что код, который находится в исходнике на одной строке (к примеру, на 28 строке этого несчастного ifiles.cpp) имеет как бы 2 разных начала и два разных конца - в одном случае выдается сообщение: "Line 28 of "ifiles.cpp" starts at address 0x4021e2 <_ZN6tifileC1EPKc> and ends at 0x402226 <_ZN6tifileC1EPKc+68>.", а в другом случае - сообщение "Line 28 of "ifiles.cpp" starts at address 0x401cf4 <_ZN6tifileC2EPKc> and ends at 0x401d38 <_ZN6tifileC2EPKc+68>."). Конечно, на выполнении самой проги это не сказывается. Дело в том, что я сделал оболочку для gdb, везде все нормально, но в таких вот "парных" функциях не проставляются точки останова. Иногда - проставляются, но только командой break <имя функции>, а точку останова, поставленную командой break <имя файла>:<номер строки> программа благополучно пролетает. Причем это не глюк моей оболочки - если "ручками" попытатся поставить бряк через <имя ф-ла>:<номер строки> - результат абсолютно такой же. Вот я и думаю - может, можно как-то прогу откомпилить, что бы таких "парных" функций не было. Просто попробуйте откомпилить мои файлы в mingw с отладочными опциями, и сами увидите, что происходит. |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | GNU toolchain | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |