如何从核心转储遍历 xerces-c DOMDocument
How do I traverse a xerces-c DOMDocument from a core-dump?
>我正在发布一个编辑过的问题,因为原始问题中的段错误和第三方库的整个业务只是分散注意力。
我有一个使用 xerces-c 和段错误(在此过程中创建核心转储(的程序。我想做的是启动 gdb 并从核心转储遍历创建的 DOMDocument。
例如,我想获取给定 DOMElement 或其子节点的属性等等。有没有人可以为此阅读任何描述 DOMElements 内部结构等的文章?甚至向我指出 xerces-c 源代码的一些资源,因为我无法在我的源代码压缩包中找到 DOMElement 的源代码。(拥有源代码可能会有所帮助,因为那时我确切地知道 DOMElement 是如何实现的,允许我遍历它(。
正如我所说,我对 xerces-c 代码库不太熟悉,apache 文档显然非常糟糕。
原始问题:-
我正在使用一个第三方库,该库反过来使用 xercesc 在段错误的地方进行 xml 解析。如何检查核心转储中的 xerces-c 元素?
我可以访问库源代码,并且在使用 DOMElement 引用作为函数参数的函数中存在段错误。类似的东西
void func (DOMElement& e, ...) {
}
我想从核心转储中检查这个 DOMElement(如打印出它的名称、标签、子元素等,基本上遍历这个 DOMElement 下面的 DOMDocument(,但我不熟悉 xerces-c 代码库。
知道我该怎么做吗?
附加信息 :- 我正在使用 gdb。
如果你使用的是gdb,我假设你使用的是linux,对吧?然后,您应该安装libexerces-c++-dev
(或libexerces-c++-devel
,具体取决于您的发行版(数据包和源代码。这甚至允许您在 xerces 代码中设置断点。
我过去一直在使用 xerces,当它崩溃时,问题通常不在于库本身,而在于"调用方"。在您的情况下,我会使用外部库创建一个非常简单的项目,并尝试解析一个简单的已知工作 XML 文件,因为即使你能找到崩溃指令,我怀疑它会有所帮助,因为 xerces 不是由你直接使用,而是由另一个库使用
- 有什么方法可以遍历结构吗
- 在循环中按顺序遍历成员变量
- 遍历模板参数
- 在遍历处理程序的向量时注册和注销处理程序
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 遍历并行数组以确定C++中的最大数字
- 遍历顺序由 std::文件系统directory_iterator给出
- 遍历链表时的无限循环
- 遍历unordered_map向量
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 如何正确地推回然后遍历堆中对象的向量?
- 遍历二维数组的所有子数组
- 如何在可变参数模板函数中遍历可变参数元组?
- 避免在遍历 IShellItemArray 时出现代码重复
- 从特定键开始遍历地图
- 关于链表遍历和调试的困惑
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 如何从核心转储遍历 xerces-c DOMDocument