Большой исполняемый файл приводит к зависанию отладчиков - PullRequest
4 голосов
/ 10 февраля 2012

У меня есть бинарный файл C ++ размером 190 МБ.Когда я помещаю этот двоичный файл в dbx и пытаюсь создать точку останова, dbx зависает.Пока dbx завис, я заметил, что его память быстро выросла до 10 ГБ.TotalView позволяет мне устанавливать точки останова;однако все данные, которые он отображает, являются поддельными.Я успешно отладил многие другие меньшие двоичные файлы, поэтому я догадываюсь, что проблема заключается в большом размере этого двоичного файла.

Двоичный файл: исполняемый 32-битный MSF ELF SPARC32PLUS версии 1, V8 + Обязательный, динамически связанный, не удаленный.
Компилятор: CC: Sun C ++ 5.9 SunOS_sparc 2007/05/03.
Dbx: 7,6 SunOS_sparc 2007/05 / 03.
TotalView: 8.2.0-0
Операционная система: Solaris 10

Как я использую Dbx:

dbx mybinary
stop at Something.cc:170

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

Я пробовал несколько вещей безуспех:
1. Динамически переключается на связывание в большинстве библиотек, что уменьшает размер двоичного файла до 19 МБ.
2. Пробовал на Solaris x86.
3. Скомпилировал программное обеспечение как 64-битное.

Кто-нибудь знает, что может вызвать это и как решить проблему?

1 Ответ

2 голосов
/ 13 февраля 2012

Попробуйте выполнить отладку с помощью другого отладчика, чтобы определить, является ли ваш код причиной проблемы.Мой любимый отладчик в Solaris - это mdb:

mdb ./yourapplicationname
> your_c_fn_name::bp
> ::run

Не забывайте использовать искаженные имена функций, если вы пишете код на C ++.Вы передаете вывод nm в grep, чтобы узнать, как называется ваша искаженная функция:

nm ./yourapplicationname | grep yourc++fnname

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

...