問題タブ [memory-leak-detector]
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.
macos - Homebrew を使用して macOS Catalina (10.15) に Valgrind をインストールするには?
「brew install valgrind」コマンドで Valgrind をインストールしようとしたところ、次のようなメッセージが表示されました。
「valgrind: この式は、アップストリームの非互換性のため、Sierra よりも新しいバージョンの macOS で期待どおりにコンパイルまたは機能しません。エラー: 要件が満たされていないため、このビルドに失敗しました。」
また、コードの head セクションで「valgrind の編集」を行い、「sourceware.org/git/valgrind.git」を「git://sourceware.org/git/valgrind.git」に置き換えてから、Iterm に「brew install --HEAD valgrind
」しかし、それは私に与えます:
c++ - Qt Creator を使用した Qt アプリケーションで heob からの出力がありません
heob を使用して、アプリのメモリ リークをチェックしたいと考えています。これは私が試したことです: qtcreator のサンプル コレクションからプロジェクト「analogclock」を開きました。その後、ドロップダウンメニューから「分析」と「Heob」を選択しました。heob パスを選択して [OK] ボタンをクリックすると、アプリケーションが起動し、コンソール ウィンドウ "heob32" が表示されます。しかし、今は何も起こりません。コンソール ウィンドウには「kill」という単語だけが表示されます。出力が表示されず、analogclock アプリを閉じると、「heob: ターゲット プロセスを作成できません」というメッセージが表示されます。heob から有用な出力を得るために、誰かが私をさらに助けてくれますか?
c++ - 同じプログラムでデバイス内の malloc() と cudaMalloc() を使用すると、cuda-memcheck が正しくレポートしない
作業中のプログラムに実装したい機能をテストするために作成した小さなテストファイルで cuda-memcheck のリークチェックを使用していましたが、グローバルメモリで非常に明白なメモリリークが報告されていないことがわかりました、 cudaMalloc()
(ホスト コードから) とmalloc()
(デバイス コードから)の両方に呼び出しがある場合。デバイスへの呼び出しがmalloc()
の機能を壊しているようですcuda-memcheck
。
これを Windows 10 の NVIDIA GeForce GTX 1050 (計算機能 6.1) で実行しています。Visual Studio C++ コンパイラ ( cl.exe
) を使用して CUDA v10.2 を使用しています。私の友人も、CUDA v9.1 と NVIDIA GeForce MX150 (計算能力 6.1) を搭載した Arch Linux システムでこれを実行し、同じ結果が得られました。使用したコードは次のとおりです。
d_t
ここでは、 を解放していないため、2 つのメモリ リークb0
とcudaFree()
. を使用してこれをコンパイルしnvcc.exe -G -Xcompiler /Zi -o cuda cuda.cu
、実行しましcuda-memcheck.exe --leak-check full cuda.exe
た。出力:
d_t->cleanup()
への呼び出しをカーネルから削除すると、出力は次のようになります。
2 バイトのリークは、d_t->yay
がデバイス ヒープから解放されていないことが原因である可能性が最も高いです。 from (基本的に、デバイスを使用してメモリを from デバイス ヒープに割り当てるコードと、 を読み取るコードを削除します)、カーネルは次のようになります。d_t->lol()
print_yay()
Tester::print()
d_t->yay
malloc()
d_t->yay
出力:
明らかに、正しいリークが示されました。
また、他にも奇妙なことに気付きました。私のカーネルが次の場合:
d_t->cleanup()
とにかく何もしないので、基本的に上記のものと同じです、出力:
それでもリークが表示されなくなりました!
これは の問題cuda-memcheck
ですか、それとも私のコードに何か問題がありますか?