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 ビットとしてコンパイルしました。

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

4

1 に答える 1