問題タブ [totalview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
487 参照

c++ - 実行可能ファイルが大きいと、デバッガーがハングする

サイズが 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 が返されることはなく、最終的に別の端末から Dbx を強制終了する必要があります。

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

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

0 投票する
1 に答える
286 参照

dynamic - totalview で動的 2D 配列をダイブする方法

このスレッドに続いて、関連する問題を共有したいと思います: totalview で int ** を 2D 配列としてダイブする方法は? (ここで解決策について説明します)。誰かが同じ問題に直面した場合、これが役立つことを願っています!

私のコードで、動的な 2D 配列が次のように設定されているとしましょう

ここで、TotalView で、スタック フレームから array2D をダイブすると、変数ウィンドウがポップアップし、次のように表示されます。

次の手順は、上記のスレッドで Chris Gottbrath が言及したものと似ていますが、Type をいつ、どのように正確にキャストする必要があるかという点で少し複雑になります。そう、

ステップ 1 : マウスの中ボタンをクリックするか、値をダブルクリックして、ポインターの値に飛び込んでポインターを逆参照します。

これを行うと、次のようになります。

ステップ 2 : タイプを 1 レベルキャストします。「タイプ」チャンネルで、 int * をに変更します

次に、Enter キーを押します。このようにして、デバッガーは、array2D がサイズ 5 のポインターのリストを指すポインターであることを認識します。私の動的配列は、ポインターのリストを指すポインターであることに注意してください。ここで、上記の値は次のように変更されます。

array2D には、サブリストへのポインターである 5 つの要素があることがわかります。ここで、これらの要素のいずれかに飛び込むと、まだ整数のリストを取得できません。整数を表示するには、ダイビングを開始するたびに、もう一度逆参照する必要があります。

ステップ 3 : array2D[2][0] から array2D[0][4] までの整数をチェックするために、要素 [2] に飛び込みたいとしましょう。パネルでその行を中クリックすると、次のように表示されます。

ここで、サブリスト番号 2 を指すポインターを見ています。これには、整数が含まれていると思われます。

ステップ 4 : ここで、逆参照するためにもう一度飛び込みます。次のように表示されるはずです。

ステップ 5 : 2 番目のレベルでタイプをキャストします。「タイプ」チャンネルで、に変更します

次に、Enter キーを押します。では、要素 array2D[2][0] - array2D[2][4] を見てみましょう。

ダイビング 1D アレイは単純ですが、2D アレイ ダイビングは慎重なダイビングとキャスティングの順序が必要なようです。他の方法を試しましたが、うまくいきませんでした。ですから、これが同じ問題に遭遇した人に役立つことを願っています.

0 投票する
1 に答える
121 参照

c - OSX 上の Totalview デバッグ ソフトウェアの問題

OSX でマルチスレッド デバッグを実行しようとしています。最初に QtCreator IDE を介して GDB を使用しようとしましたが、これを正確に機能させることはできませんでした。現在、Totalview 評価を使用しています。それを実行可能ファイルに指定するとすぐに、次の結果が得られます。

ここで、exc1 は私の実行可能ファイルです。それらのメッセージはどういう意味ですか? 問題を解決するにはどうすればよいですか? 念のため、ここでGDBにタグを付けています

0 投票する
0 に答える
667 参照

php - PHP を使用して ODBC 経由でデータソースをクエリする

単純な SQL クエリを使用してデータソースをクエリしようとしていますが、次のエラーが発生します: *Warning: odbc_exec() [function.odbc-exec]: SQL error: [SimbaLNA][Simba][SimbaEngine ODBC Driver ]select (<< ??? >>[agent_id], [agent_name]) from agent;, C:\xampp\htdocs\Tas\showtables.php 行 22 の SQLExecDirect で SQL 状態 37000*

次のコードを実行して、すべてのテーブル名のリストを受け取ることができるため、ODBC 接続が確立され、正しく接続されていることがわかります。

続行して、以下のコードを実行しようとすると:

上記のエラーが発生します。なぜこれが起こるのか誰にも分かりますか?

さらに情報が必要な場合は、お知らせください。

よろしくお願いします

0 投票する
1 に答える
313 参照

debugging - TOTALVIEW を使用して CUDA コードをデバッグしようとしたときのエラー

SEGMENTATION FAULT に関連するエラーを修正しようとしています。したがって、コードの段階的なデバッグを使用してエラーを修正しようとすると、いくつかのエラーが発生しました。

エラー: cuda_trace_obj::initialize_cuda_library: Cuda initialize() が CUDBG_ERROR_INITIALIZATION_FAILURE(20) を返しました!

エラー: cuda_system_status_t::initialize: エラー CUDBG_ERROR_UNINITIALIZED(5) デバイス数の取得

上記のエラーに関するヘルプまたはポインタは大歓迎です。

0 投票する
1 に答える
1367 参照

openmpi - lmgrd ログ ファイルを確認するか、lmreread を試してください - Totalview で Open MPI プログラムをロードするときにエラーが発生しました

TotalView でプログラムをロードすると、「lmgrd ログ ファイルを確認するか、lmreread を実行してください」という警告ダイアログ ボックスが表示され、プログラムがロードされません。

最初に [プログラム] タブから適切なプログラムを選択し、次に [並列] タブから [MPI を開く] を選択して、4 つのタスクを使用しています。[OK] をクリックすると、警告ダイアログが表示され、デバッガーが読み込まれません。

Totalview 8.9.2-2 と Open MPI 1.4.5 を使用しています

0 投票する
2 に答える
626 参照

c++ - QString の値を取得する Totalview

ここに画像の説明を入力

QStringtotalview デバッガーでオブジェクトをダブルクリックすると、このウィンドウが表示されます。どうすれば正確な値を取得できますか。

試してみcommand.toUtf8().constData()ましたが、印刷されCannot find name "toUtf8"ます。

0 投票する
1 に答える
129 参照

c - totalview デバッガーを変数にアタッチする

だから私はコードをデバッグしようとしています。しかし、何らかの理由で、必要なセクションを通過しません。コード片を呼び出す管理変数は、ポインター「*sret」です。私はたくさん試しましたが、運がありませんでした。そのCプログラムです。変数にウォッチポイントをアタッチする方法はありますか? 変数を認識しないため...ただし、ファイルは認識します。

0 投票する
1 に答える
865 参照

c++ - コアファイルを使用して消費されたメモリを見つける

ソフトウェアのメモリ消費量が多い問題を分析しています。この高いメモリ消費量に対応するコア ファイルがあります (このコア ファイルは、コア ファイルを生成するアプリケーションを強制終了することによって生成されます)。しかし、このコア ファイルを使用して実際のメモリ消費量を表示することはできません。Totalview と gdb を使用しました...これら 2 つを使用すると、プロセスによって消費される合計メモリのスナップショットを取得できず、どのライブラリがすべてのメモリを消費していますか。

このメモリ消費量は 10 日から 20 日以上にわたって発生しているため、このメモリ消費量が多い原因を突き止めようとしています。

valgrind は、このコア ファイルの分析に役立ちますか?

入力/提案は大歓迎です。

0 投票する
0 に答える
404 参照

fortran - mpif90 でコンパイルされた Fortran プログラムが h5fc でコンパイルされたサブルーチンを呼び出し、渡されたパラメーターの一部が不正なアドレスを取得する

私はしばらくの間 Fortran プログラムを使用しており、最近、いくつかのHDF5出力を生成するように依頼されました。h5 ファイルを書き込むサブルーチンを作成しましたが、元の Fortran プログラムからいくつかのパラメーターを渡す必要があります。Fortran プログラムは mpif.h をインクルードし、mpif90 でコンパイルされますが、サブルーチンはh5fcを使用してコンパイルされます(重要な場合は、メイン プログラムの並列化されたループで呼び出されます)。

hdf5 サブルーチンから誤ったログ出力を取得していたので、totalview にアクセスして問題を見つけようとしたところ、サブルーチンで一度にパラメーターの一部 (すべてではない) が不正なアドレスであることに気付きました (メイン プログラムではすべて問題ありませんでした)。すべての hdf5 関数をコメントアウトし、サブルーチンを mpif90 でコンパイルすると、すべて正常に見えます。もちろん、これにより、出力用の h5 ファイルを作成するために必要な HDF5 ルーチンを使用できなくなります。

関連するコードは次のとおりです。

私は一貫してすべてを宣言したと確信していますが、Totalview は常に次の不正なアドレスを持つ vaiables を返します。

  • 頂点
  • num_vert
  • num_theta (ただし、num_phi は除く)
  • データは最初のエントリのみですが、正しいです

言及する価値があるかもしれないもう 1 つのこと: Totalview では、メイン プログラム (mpif90) の変数の Type は次のように記述されます。

サブルーチン (h5fc) では、型は Totalview で次のように表示されます。

(コンパイラの違いだと思いますか?)

最後に、問題のコードのコンパイル行を次に示します。

h5fc -g -L/usr/lib64/ -lhdf5_fortran -lhdf5 -c HDF5_sub.F90

mpif90 -g -c main_prog_mpif90.F90

したがって、プログラムとそのサブルーチンの 1 つが異なるコンパイラ (この場合は mpif90 と h5fc) でコンパイルされている間に問題があると考えています。その場合、回避策はありますか?別の言い方をすれば、メイン プログラムとそのサブルーチンを異なるコンパイラでコンパイルし、渡されるパラメータのデータ型に問題がないことを期待できますか? どのような予防措置を講じる必要がありますか?

もちろん、私がまったく間違ったことをしている可能性は非常に高いです (私は HDF5 の初心者です)。

説明が簡単であるほど、私にとっては良いことです。

よろしくお願いします。

UPDATE1: @Vladimir F, h5fc -v は大量の出力を提供しますが、それは gfortran であると推測しています (最初の行にDriving: gfortran -O2 ... と表示されます)。mpif90 -v は、ifort 14.0.1 を示します。このコードを含むシステムはインターネットに接続されていないため、ここにコピーして貼り付けることはできません (申し訳ありません!)。integer*4 のコメントについては、実際にはデータ型用のモジュールがあります。質問用に単純化しただけです。メインプログラムで使用されるモジュールには、次のものがあります。

このモジュールも mpif90 でコンパイルされており、hdf5 サブルーチンで使用しようとするとコンパイルされません。また、h5fc でそのモジュールをコンパイルしたことを除いて、メイン プログラムで使用されるものと同じ hdf5 データ型モジュールを作成しようとしましたが、パラメーターは依然として不正なアドレスとして取得されます。(この時点で、ほとんど何でも試してみたいと思います)。

更新 2: 2 つの異なるコンパイラの使用に関する私の質問に答えていると思われるこの質問 を見つけました (以前にどのように見逃したのかわかりません)。質問は数年前のものなので、誰かが今解決策があると思うなら、気軽に投稿してください. 価値があるのは、メイン プログラムでいくつかのパラメーターをファイルに書き出すだけで、hdf5 サブルーチンが、ファイルを読み取り、そのデータから h5 ファイルを生成するスタンドアロン プログラムになります。

お時間を割いていただき、ありがとうございました。