サイズが 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 ビットとしてコンパイルしました。
これが発生する原因と問題の解決方法を知っている人はいますか?