問題タブ [valgrind]

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 投票する
24 に答える
66891 参照

c++ - Linux で C++ アプリケーションを開発するためにどのツールを使用していますか?

Linux 環境で C++ アプリケーションを開発しています。私が毎日使用するツールには、Eclipse と CDT プラグイン、gdb、および valgrind が含まれます。
他の人はどのようなツールを使用していますか? Microsoft Visual Studio の滑らかさに匹敵する Linux 用の製品はありますか?

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

python - Guile拡張モジュールでメモリリークをチェックする方法は?

私は C で書かれた Guile の拡張モジュールを開発しています。この拡張モジュールには Python インタープリターが組み込まれています。

この拡張モジュールは Python インタープリターを呼び出すため、Python オブジェクトが占有するメモリが適切に管理されていることを確認する必要があります。

私は、Python インタープリターが独自のメモリ処理で適切に動作していることを発見しました。そのため、valgrind を実行することで、他に干渉要因がなければ、独自の Python インタープリター埋め込みコードのバグによるメモリ リークを見つけることができます。

しかし、valgrind の下で Guile を実行すると、valgrind がメモリ リークを報告します。このようなメモリ リークは、自分のコードによるメモリ リークを覆い隠します。

問題は、私のコードのバグによるメモリ リークを、valgrind によって報告された Guile によるメモリ リークと区別するにはどうすればよいかということです。valgrind の代わりに別のツールはありますか? 特別な valgrind オプション? あきらめて、手動のコード ウォークスルーに頼りますか?

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

eclipse - Valgrind での Eclipse の実行

Valgrindで Eclipse を実行することに成功した人はいますか? 私は JNI コードが関係する特に毛むくじゃらのクラッシュと戦っており、Valgrind がおそらくその卓越性を (再び) 証明できることを期待していましたが、Valgrind で Eclipse を実行すると、JVM が終了し、初期オブジェクトを作成できないというエラー メッセージが表示されます。 heap (現在、正確なエラー メッセージにアクセスすることはできません。でき次第、この投稿を編集します。)

0 投票する
4 に答える
2803 参照

c++ - malloc/free が呼び出されるたびに stderr に出力する

Linux/GCC/C++ では、malloc/free/new/delete が呼び出されるたびに何かを stderr に記録したいと考えています。ライブラリのメモリ割り当てを理解しようとしているので、単体テストの実行中にこの出力を生成したいと思います。メモリ リークの検出に valgrind を使用していますが、割り当てだけをログに記録するオプションが見つかりません。

何か案は?可能な限り簡単な解決策を探しています。ライブラリの再コンパイルはオプションではありません。

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

c++ - valgrind にフォークされたプロセスを memcheck するように指示するにはどうすればよいですか?

xでリークをチェックしたいプロセスがありvalgrindます。問題は、xが によって実行されy、さらにによってy実行されることzです。環境変数、コマンド ライン スイッチ、必要なファイルなど、の 環境をセットアップするため、xスタンドアロンで実行できません。yzxx

  1. valgrind実行するように指示できる方法はありますzが、見つかったフォークを追跡して報告する方法はありますか?
  2. valgrindフォークをたどって、という名前のプロセスについてのみ報告するように指示できる方法はありますxか?
  3. valgrindgdbでできる方法で、すでに実行中のプロセスにアタッチするように指示できる方法はありますか?

これが問題かどうかはわかりませんが、SuSE64 Linux と valgrind-2.4.0 で実行しています。

ありがとう!

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

valgrind - makeファイルまたはシェルスクリプトでvalgrindの下で実行されているかどうかをどのように検出しますか?

Makefile が valgrind で実行されているかどうかを検出する必要があります (間接的に、valgrind --trace-children=yes を使用)。C から実行する方法は知っていますが、スクリプトから実行する方法が見つかりません。

以前の回答は Linux でのみ機能します。Mac OS XI の場合、誰かがより良いアイデアを持っていない限り、環境で VALGRIND_STARTUP_PWD を grep するつもりです。

0 投票する
6 に答える
1978 参照

c - C のデバッグとベスト プラクティスを学ぶ方法

C で Apache モジュールを作成しました。特定の条件下では、segfault になる可能性がありますが、その理由はわかりません。この時点で、それは私のコードである可能性があり、プログラムをコンパイルしている方法である可能性があります。または、OS ライブラリのバグである可能性があります (segfault は dlopen() の呼び出し中に発生します)。

GDB と Valgrind を実行してみましたが、成功しませんでした。GDB は、無意味に見える dlopen() システム コールへのバックトレースを表示します。Valgrind では、バグは実際には消えているか、少なくとも再現不可能になっているようです。一方、これらのツールに関しては、私はまったくの初心者です。

私は実稼働品質の C プログラミングに少し慣れていません (何年も前に C を使い始めましたが、専門的に扱ったことはありません)。プログラムのデバッグのコツを学ぶための最良の方法は何ですか? 他にどのようなツールを調査する必要がありますか? 要約すると、新しいバグの課題に取り組む方法をどのように見つけますか?

編集: 明確にするために、Sydius と dmckee の意見に感謝したいと思います。私はApacheのガイドを見て、dlopen(およびdlsymとdlclose)にかなり精通しています。私のモジュールはほとんどの部分で機能します (約 3,000 行のコードで、この 1 つのセクションを有効にしない限り、問題なく機能するようです)。

これが私の元の質問の由来だと思います-次に何をすべきかわかりません。GDB と Valgrind を最大限に活用していないことはわかっています。正確なフラグでコンパイルしていない可能性があることはわかっています。しかし、私はそれ以上を理解するのに苦労しています。私がすでに知っていることを教えてくれる初心者向けガイドや、必要以上のことを教えてくれるマニュアル ページを見つけることができますが、ガイダンスはありません。

0 投票する
3 に答える
4926 参照

c++ - プログラムが valgrind 内から実行されているかどうかを検出するにはどうすればよいですか?

valgrind 内から実行されている実行可能ファイルを実行時に識別する方法はありますか? C++ 単体テストのセットがあり、そのうちの 1std::vector::reserveつでstd::bad_alloc. これを valgrind で実行すると、完全に回避され、メモリ リーク (valgrind を使用) と動作 (例外がスローされることを期待) の両方をテストできなくなります。

これを再現する最小限の例を次に示します。

valgrind を実行すると、次の出力が得られます。

valgrind 内から実行されているときに、問題のあるコードを単純にスキップするように単体テストを変更したいと思います。これは可能ですか?

0 投票する
38 に答える
361925 参照

c - Windows に代わる適切な Valgrind はありますか?

Valgrind を調べて、C コーディング/デバッグが Linux 専用であることを発見したとき、OS を Linux に移行する必要や興味がないので、Windows 用の同様に優れたプログラムがあるかどうか疑問に思っていました。

0 投票する
3 に答える
3374 参照

java - Valgrindの下のSunVMでJNIアプリケーションを実行する

Sun JVMは、valgrindで実行すると多くの余分なノイズを吐き出します。これにより、アプリケーションでのメモリの問題の追跡が非常に困難になります。

この状況で小麦をもみ殻から分離するために、偽のメモリエラーを取り除く抑制ファイルまたはVMランタイムモードのいずれかを見つけたいと思います。助言がありますか?