0

元の質問でのセグメンテーション違反とサードパーティ ライブラリのビジネス全体が気を散らしているだけなので、編集した質問を投稿しています。

私が持っているのは、xerces-c と segfaults (プロセスでコア ダンプを作成する) を使用するプログラムです。私がやりたいことは、gdb を起動し、作成された DOMDocument をコア ダンプからトラバースすることです。

たとえば、特定の DOMElement またはその子ノードなどの属性を取得したいとします。DOMElements の内部構造などについて説明している、これについて読むことができる記事はありますか? または、ソース tarball で DOMElement のソース コードを見つけることができなかったので、xerces-c ソース コードに関するいくつかのリソースを教えてください。(それ以来、ソースコードを持っていると役立つかもしれません。DOMElement がどのように実装されているかを正確に知っているため、それをたどることができます)。

私が言ったように、私は xerces-c コードベースにあまり詳しくなく、apache のドキュメントは明らかにひどいものです。

元の質問:-

私はサードパーティのライブラリを使用しています。これは、segfaulting のどこかで xml を解析するために xercesc を使用しています。コアダンプから xerces-c 要素を検査するにはどうすればよいですか?

ライブラリのソース コードにアクセスできますが、関数の引数として DOMElement 参照を使用する関数でセグメンテーション違反が発生しています。何かのようなもの

void func (DOMElement& e, ...) {
}

コアダンプからこの DOMElement を検査したい (名前、タグ、子要素などを出力するように、基本的にこの DOMElement の下の DOMDocument をトラバースします) が、xerces-c コードベースに精通していません。

どうすればこれを行うことができますか?

追加情報:- gdb を使用しています。

4

1 に答える 1

1

gdb を使用している場合は、Linux を使用していると思いますよね? libexerces-c++-dev次に、 (またはlibexerces-c++-develディストリビューションによっては) パケットとソース コードをインストールする必要があります。これにより、xerces コードにブレークポイントを設定することもできます。

私は過去に xerces を何度も使用してきましたが、一般的にクラッシュする場合、問題はライブラリ自体ではなく、「呼び出し元」にあります。あなたの場合、外部ライブラリを使用して非常に簡単なプロジェクトを作成し、動作することがわかっている単純な XML ファイルを解析しようとします。なぜなら、xerces が使用されていることを考えると、クラッシュの指示を見つけることができたとしても、それが役立つとは思えないからです。あなたから直接ではなく、別の図書館から

于 2012-05-10T16:56:51.290 に答える