2

ホームディレクトリにかなり大きな .gdbinit (したがって、ここにはコピーされません) があります。

Xcode 内でコードをデバッグしたい場合、次のエラーが発生します。

Failed to load debugging library at:

/Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.A.dylib

Custom data formatters are disabled.

Error message was:
0x1005c5 "dlopen(/Developer/Applications/Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin/Contents/Resources/PBGDBIntrospectionSupport.A.dylib, 16): image not found" 

実際には-以下に投稿されているように-デバッグはXcodeで引き続き機能しますが、データフォーマッターは壊れます。.gdbinitを移動するか、データフォーマッターを無効にすると、Xcodeでgdbが動作状態に戻りますが、明らかに面倒です(最初のケースではデータフォーマッターを含む)

gdbinit のどの設定が Xcode でこのエラーを引き起こす可能性があるかについてのアイデアはありますか?

返信からのメモ: wxWidgets ライブラリにリンクするときにこのエラーが発生する可能性があるようです (Google 検索から)。私がここでやっていないこと。

注: 必要に応じて、(長い) .gdbinit のコピーを提供できます

WIP: .gdbinit の詳細を調べて、問題を絞り込めるかどうかを確認します

4

3 に答える 3

5

私の「短い」答え:


すでにお気づきかもしれませんが、念のため:

まず第一に、そのエラーが表示された場合でも (クリックして続行すると仮定すると)、Xcodeのデバッグ機能の 99% を引き続き使用できるはずです。つまり、このエラーは、特定のデバッグ セッションで、デバッガーの非常に小さな特定の部分だけが "壊れている" ことを意味します。これは、特定のプログラム実行に対してデバッグが完全に停止している、または不可能であることを意味するものではありません。

上記の事実を考慮して、単にエラーを取り除きたいだけで、カスタム データ フォーマッタが機能しているかどうかは気にしない場合は、次のメニュー項目の横にあるチェック マークを削除します。

  • 実行 -> 変数ビュー -> データ フォーマッタを有効にする

私の「長い」答え:


私のオフィスの開発者は、サードパーティのライブラリが原因であることが判明するまで、このまったく同じ Xcode エラーをかなり長い間経験していました。

私たちの場合、このエラーは wxWidgets を使用するプロジェクトでのみ発生していました。wxWidgets の使用が唯一の原因であると示唆しているわけではありません。私はあなたのケースの適切な解決策につながる可能性のあるより多くの情報を提供しようとしているだけです.

また、興味深いことに、(私のオフィスでは) .gdbinit ファイルを使用したり、存在させたりすることなく、このエラーが発生していました。

このエラーを引き起こした wxWidgets の「プロパティ」は、「dlopen」の「カスタム/汎用」実装に関連していたことが判明しました。Mac OS X 10.3 より前では、dlopen はオペレーティング システム内で提供されていなかったため、一部のライブラリは独自のバージョンをコーディングしていたようです。そのようなライブラリが使用されている場合、明らかに PBGDBIntrospectionSupport.A.dylib を開こうとする dlopen 呼び出しが失敗する可能性があります。

10.3 以降の dlopen についてさらに詳しく知るには、この sourceforge パッチ提出に関するコメントをお読みください。

また、別の関連リンクを次に示します。

PBGDBIntrospectionSupport とカスタム データ フォーマッターに関する Xcode ユーザー メーリング リストのメッセージ

于 2008-09-30T16:16:19.240 に答える
0

あなたのエラーは、実際には私がwxWidgetsで得ていたものとは少し異なります。dlopenの競合を見つけてからしばらく経ちましたが、その特定のデバッグセッションでgdb自体を使用して、何が起こっているのかを把握する必要があったことを覚えています。また、wxWidgetsの問題により、16進アドレスは毎回異なっていました。

gdbで、エラーメッセージにある16進アドレスで「infosymbol」を呼び出します。これにより、ロードに失敗したものの詳細が正確にわかる場合があります。

于 2009-01-23T01:40:09.213 に答える
0

奇妙な... 私の Mac を見回すと、そのライブラリは問題なく、正常に見えます。

dtrace を使用して、エラーが発生したときに Xcode と GDB が何をしようとしているのかを確認しましたか?

于 2008-09-30T01:01:23.950 に答える