2012-02-09 30 views
4

190 MBのC++バイナリがあります。このバイナリをdbxに入れてブレークポイントを作成しようとすると、dbxがハングします。 dbxがハングアップしている間、私はそのメモリが10 GBを超えて急速に増加するのを観察しました。 TotalViewではブレークポイントを設定できます。ただし、表示されるすべてのデータは偽です。私は正常に多くの他の小さなバイナリをデバッグしたので、このバイナリの大きなサイズは問題です。実行可能ファイルが大きいと、デバッガがハングする

バイナリ:ELF 32ビットMSB実行可能SPARC32PLUSバージョン1、V8 +必須、動的リンク、削除されません。
コンパイラ:CC:Sun C++ 5.9 SunOS_sparc 2007/05/03。
Dbx:7.6 SunOS_sparc 2007/05/03。
TotalViewの:8.2.0-0
オペレーティングシステム:Solaris 10の

私はdbxを使用していますどのように

dbx mybinary 
stop at Something.cc:170 

dbxは、このコマンドから返されたことがないと私は最終的には別々の端末からdbxを殺さなければなりません。

私は成功しなかったいくつかのことを試しました:
1.バイナリサイズを19 MBに減らしたライブラリのほとんどのライブラリを動的にリンクするように切り替えました。
2. Solaris x86で試行しました。
3.ソフトウェアを64ビットとしてコンパイルします。

これが起こる原因と問題の解決方法を知っている人はいますか?

+0

コンパイラのバージョンとdbxのバージョンはどちらですか? dbx -V CC -V検証するには:dbxが停止し、「停止」コマンドを入力したことに応答して拡張が始まりますか? デバッガでプログラムを実行する必要はありませんか? –

+0

私は元の投稿を明確にすることであなたの質問に答えました。 – Hitman

+0

最新のバージョンのSolaris Studioをダウンロードして試してみてください。 http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.html 使用しているバージョンは4.5歳です。 –

答えて

2

異なるデバッガでデバッグして、コードが問題を引き起こしているかどうかを判断してください。 Solaris上で私のお気に入りのデバッガがMDBさ:

mdb ./yourapplicationname 
> your_c_fn_name::bp 
> ::run 

は、あなたがC++でコーディングされている場合、符号化された関数名を使用することを忘れないでください。

nm ./yourapplicationname | grep yourc++fnname 

MDBは、dbxを使用して同じ問題がある場合、私はあなたのコードを見てみましょうことを示唆している:あなたのマングルされた関数名が何であるかを見つけるためにgrepをすることができ、パイプnmの出力。しかし、mdbが問題なくbpに達すると、mdb(私が知る限り、ソースファイルで作業することはできません)またはdbxを幸せにするためにアプリケーションを調整し続けることができます。

+0

ありがとう@Mustafa。 try mdbとブレークポイントが機能しました。Mdbは、プリントを使用してデバッグするステップアップです。私のチームと私は、ソースファイルを扱うデバッガでより多くの価値を見いだすでしょう。したがって、私はdbxまたはTotalViewを稼働させるための情報を非常に高く評価します。 – Hitman

+0

dbxtoolを試しましたか? –

+0

私はdbxtoolがSun Studio 12で利用できるとは思っていません。また、dbxエンジンを使っているGUIレイヤーもあります。 dbxtoolでは同じバグが発生する可能性があります。 –

関連する問題