Я знаю this question, но он не работает для меня. ПрограммаКак связать с debug версиями libc и libstdC++ в GCC?
Для установки, возьмите простой C++, hw.cpp
, определяется по формуле: int main() { }
При компиляции с g++ -o hw hw.cpp -O0 -g
на Linux, работающий ldd ./hw
дает:
linux-gate.so.1 => (0x003e5000)
libstdc++.so.6 => /usr/local/lib/libstdc++.so.6 (0x007c5000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x006a4000)
libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1 (0x00a40000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00a93000)
/lib/ld-linux.so.2 (0x00a0f000)
Теперь я, кажется, есть отладочные библиотеки в /usr/lib/debug/lib/tls/i686/cmov/
, которые, я думаю, являются соответствующими отладочными сборками системных библиотек.
Вопрос: Как скомпилировать свою программу так, что она связана с отладочной сборки стандартных библиотек C и/или C++, libc
/libm
/libstdc++
, общий или статический? Для общей сборки я хочу, чтобы вывод ldd ./hw
указывал на каталог отладки.
(Справочная информация: Одна из общих библиотек, который используется в моем проекте, как сообщается, как утечка («все еще достижим») по Valgrind, но истоки не в самой общей библиотеке, но в dlopen типа кода (see here .). Таким образом, я понял, что если я могу пошагово _Start()
вызова в CRT я мог бы быть в состоянии проследить преступник)
Update/Исправление: Я думаю, что я был просто очень, очень глупо - отладка библиотеки, вероятно, всегда были связаны по желанию. Я был смущен отладчиком, который ничего не показывал, когда ступил, потому что у меня нет нужного исходного кода для библиотек.
Обновление II: ОК, затяните предыдущее обновление. У меня есть источники библиотеки сейчас, но, хотя это правда, что стандартная библиотека поставляется с отладочными символами, у меня нет отдельной отладки build. Является ли такая сборка доступной и как я могу связать ее?
Возможно, вы знаете, что некоторые стандартные реализации библиотек используют пулы для быстрого распределения? http://valgrind.org/docs/manual/faq.html#faq.undeferrors –
@honk: Я полностью согласен с тем, что это не настоящее беспокойство. Меня просто беспокоит то, что сторонний код может вызывать предупреждения в * моем * коде (обратите внимание, что есть только ссылки на некоторые ложные '.c' файлов, которые у меня на самом деле нет, * не * для общей библиотеки), которые я, похоже, не могу подавить ... По крайней мере, с помощью отладочной CRT я надеюсь лучше взглянуть. –