Как пройти DOMDocument xerces-c из дампа памяти?
Я публикую отредактированный вопрос, так как весь бизнес segfaults и сторонних библиотек в оригинальном вопросе просто отвлекает.
У меня есть программа, которая использует xerces-c и segfaults (создавая дамп ядра в процессе). Я хочу запустить GDB и просмотреть созданный DOMDocument из дампа памяти.
например, я хочу получить атрибуты данного элемента DOMElement или его дочерних узлов и так далее. У кого-нибудь есть какие-нибудь статьи, которые я могу прочитать для этого, которые описывают внутреннюю структуру DOMElements и так далее? Или даже укажите мне на некоторые ресурсы по исходному коду xerces-c, так как я не смог найти исходный код для DOMElement в моем исходном архиве. (Наличие исходного кода может помочь с тех пор, я точно знаю, как реализован DOMElement, что позволяет мне проходить его).
Как я уже сказал, я не слишком знаком с базой кода xerces-c, и документация apache явно ужасна.
Оригинальный вопрос:-
Я использую стороннюю библиотеку, которая в свою очередь использует xercesc для разбора xml где-то, что является segfaulting. Как проверить элементы xerces-c из дампа памяти?
У меня есть доступ к исходному коду библиотеки, и он работает с ошибкой в функции, которая использует ссылку DOMElement в качестве аргумента функции. Что-то вроде
void func (DOMElement& e, ...) {
}
Я хочу проверить этот DOMElement из core-dump (как при распечатке его имени, тегов, дочерних элементов и т. Д. В основном проходить DOMDocument ниже этого DOMElement), но я не знаком с базой кода xerces-c.
Есть идеи, как я могу это сделать?
Дополнительная информация:- Я использую GDB.
1 ответ
Если вы используете GDB, я предполагаю, что вы используете Linux, верно? Тогда вы должны установить libexerces-c++-dev
(или же libexerces-c++-devel
в зависимости от вашего дистрибутива) пакет и исходный код. Это позволит вам даже установить точки останова в коде xerces.
В прошлом я много использовал xerces, и когда он вообще падает, проблема не в самой библиотеке, а в "вызывающей". В вашем случае я бы создал очень тривиальный проект с использованием внешней библиотеки и попытался разобрать простой известный XML-файл, потому что даже если вы можете найти инструкции по сбою, я сомневаюсь, что это поможет, учитывая, что используется xerces не напрямую вами, а другой библиотекой