GDB не видит некоторые классы, но видит другие ⇐ C++
GDB не видит некоторые классы, но видит другие
У меня возникла проблема с отладкой большой базы кода под Linux CentOS 6. Она состоит из основного исполняемого файла и нескольких файлов .so, которые загружаются динамически после того, как выясняется, откуда их загрузить.
У меня есть исходный код основного исполняемого файла и двух модулей. У меня нет доступа к большинству других модулей, но я могу найти расположение заголовков, проверив вывод make -n.
Для отладки я использую код Visual Studio. Я предоставил ему основные исходные коды и два модуля, и он может прекрасно отображать содержимое объекта.
Моя проблема связана с классами, которые определены в запрещенных модулях. VSC имеет заголовки в рабочей области, и, проверяя источники информации -exec, даже GDB узнает о дополнительных заголовках.
Однако, если класс содержит указатели на классы, определенные в двух модулях, которые я вижу, и в модулях Frobidden, я могу видеть только объекты из моих модулей, но не из запрещенных. В последнем случае VSC просто печатает {...}
Более того, представьте, что V — это класс из видимой базы кода, а F — из запрещенной базы кода. Проверка их размера в консоли отладки VSC дает:
-exec print sizeof(V) 3 доллара = 1800 -exec print sizeof(F) В текущем контексте нет символа «F». Что я делаю не так?
У меня возникла проблема с отладкой большой базы кода под Linux CentOS 6. Она состоит из основного исполняемого файла и нескольких файлов .so, которые загружаются динамически после того, как выясняется, откуда их загрузить.
У меня есть исходный код основного исполняемого файла и двух модулей. У меня нет доступа к большинству других модулей, но я могу найти расположение заголовков, проверив вывод make -n.
Для отладки я использую код Visual Studio. Я предоставил ему основные исходные коды и два модуля, и он может прекрасно отображать содержимое объекта.
Моя проблема связана с классами, которые определены в запрещенных модулях. VSC имеет заголовки в рабочей области, и, проверяя источники информации -exec, даже GDB узнает о дополнительных заголовках.
Однако, если класс содержит указатели на классы, определенные в двух модулях, которые я вижу, и в модулях Frobidden, я могу видеть только объекты из моих модулей, но не из запрещенных. В последнем случае VSC просто печатает {...}
Более того, представьте, что V — это класс из видимой базы кода, а F — из запрещенной базы кода. Проверка их размера в консоли отладки VSC дает:
-exec print sizeof(V) 3 доллара = 1800 -exec print sizeof(F) В текущем контексте нет символа «F». Что я делаю не так?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение