2012-05-10 5 views
0

元の質問のsegfaultsやサードパーティのライブラリ全体がちょっと混乱しているので、私は編集した質問を投稿しています。xerces-c DOMDocumentをコアダンプからトラバースするにはどうすればよいですか?

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

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

私が言ったように、私はxerces-cコードベースにあまり慣れていませんし、Apacheのドキュメントはひどく恐ろしいものです。

元の質問: -

私は順番にセグメンテーションフォルトているどこかのXML解析のためのxercescを使用するサードパーティのライブラリを使用しています。 xerces-c要素をコアダンプから調べるにはどうすればよいですか?

私はライブラリのソースコードにアクセスでき、関数の引数としてDOMElement参照を使用する関数でsegfaultingしています。

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

私は(基本的にこのDOMElementの以下のDOMDocumentを通過します。ように、それの名前、タグ、子要素や印刷におけるように)コアダンプからこのDOMElementのを検査するような何かが、私は慣れていないんですよxerces-cコードベースを使用します。

どのように私はこれを行うことについて行くことができますか?

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

+2

犠牲7チキン – PlasmaHH

答えて

1

gdbを使用している場合は、linuxを使用していると仮定します。次に、libexerces-c++-dev(または、配布に応じて)パケットとソースコードをインストールする必要があります。これにより、xercesコードにブレークポイントを設定することさえできます。

私は過去に多くのxercesを使用していましたが、一般にクラッシュすると、問題はライブラリ自体ではなく、「呼び出し元」にあります。 あなたのケースでは、外部ライブラリを使って非常に簡単なプロジェクトを作成し、単純な既知のXMLファイルを解析しようとします。クラッシュの指示を見つけることができても、

+0

私はlibxerces-C++ - devパッケージに完全なデバッグシンボル情報が含まれていないと信じられて以来、ソースからxerces-cをコンパイルしました。とにかく、問題はxerces-cではなくライブラリにあるので、ライブラリが "正しい" DOMElementノードを作成して渡していることを確認したいだけです。 XMLファイルでDOMPrintを実行すると完全に正常に動作し、問題は解決されます。小さなテストエグゼクティブを書くこともうまくいきます。 segfaultは確かに外部ライブラリにありますので、私が心配しているのはxercescではありません。 – owagh

+0

外部ライブラリを使用する小さなテストエグゼクティブを書こうとしましたか?それは私の答えでは意味していたものです。小テストは外部ライブラリのためであり、 'xerces'のためのものではありませんでした。私はあいまいさを取り除くために私の答えを更新します – Emiliano

+0

私はあなたがそれを意味していると思っていた...そして、はい、小さなテストのエグゼクティブはうまくいくようです。私は最小限の実行可能ファイルで再作成できませんでした。とにかく、私はsegfaultsを修正しましたが、私の質問はまだ答えられていません。デバッガ中にxerces-c DOMDocumentをトラバースするには?サードパーティの図書館やセグメンテーションの全般的なビジネスは、質問の主な点からちょうど気を散らしているので、もう少し一般的にするために質問を更新します。 – owagh

関連する問題