問題タブ [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 投票する
1 に答える
391 参照

memory - プログラムのメモリのすべての割り当てと解放を記録する方法は?

ねじれたサーバーのメモリ使用量が増加する理由が断片化であることを知りたいです。ここに質問を投稿しました: ツイスト サーバーのメモリ使用量の増加の原因を見つける方法は?

これから行うことは、ヒープを視覚化することです。記事を見つけました:メモリの断片化。その記事のヒープの図は、私が望むものとまったく同じです。このような図を matplotlib やその他のツールで描くことは難しくありません。最も難しい仕事は、メモリの割り当てと解放をどのように記録するかということです。

CPython のソース コードを変更し、いくつかのログ コードを omalloc.c に追加して Python を再コンパイルし、変更した CPython を使用してサーバーを実行できることを知っています。しかし、私はそれで時間を無駄にしたくありません。次に、利用可能なツールを探しています。valgrindを使用してメモリ リークを検出できるツールがあることは知っていますが、割り当てと割り当て解除を記録する方法がわかりません。その memcheck が次のようなものを検出できることがわかります。

  • 無効な読み取り
  • 初期化されていない
  • 無効な無料

しかし、それは私が望むものではありません。必要なのは次のとおりです。

  • メモリのすべての割り当てと割り当て解除を時間、アドレス、サイズとともに記録する

私の質問は次のとおりです。

  1. どうすればvalgrindでそれを行うことができますか?
  2. できない場合は、そのためのモジュールを作成する必要がありますか?
  3. または、これを達成できるより良いツールはありますか?

ありがとう。

0 投票する
7 に答える
3498 参照

c - Valgrindは、解放されていないメモリがあると主張しています。これは悪いですか?

Valgrindは、私のコードで次のリークの概要を示しています。ただし、mallocされたすべてのメモリを解放しました。これは悪いことですか、それとも正常ですか?私のプログラムはcにあります。

== 3513 ==リークの概要:

== 3513 ==間違いなく失われました:0ブロックで0バイト。

== 3513 ==失われる可能性があります:0ブロックで0バイト。

== 3513 ==まだ到達可能:1ブロックで568バイト。

== 3513 ==抑制:0ブロックで0バイト。

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

valgrind - valgrind、プロファイリング タイマーの期限が切れましたか?

valgrind を使用して単純な C プログラムのプロファイリングを試みます。

[zsun@nel6005001 ~]$ valgrind --tool=memcheck ./fl.out
==2238== Memcheck、メモリエラー検出器
==2238== Copyright (C) 2002-2009、および GNU GPL'd, by Julianスワード等。
==2238== Valgrind-3.5.0 と LibVEX を使用。著作権情報を -h で再実行
==2238== コマンド: ./fl.out
==2238==
==2238==
==2238== ヒープの概要:
==2238== 終了時に使用中: 1,168 バイト1 ブロック
==2238== 合計ヒープ使用量: 1 割り当て、0 解放、1,168 バイト割り当て
==2238==
==2238== リークの概要:
==2238== 確実に失われました: 0 ブロックで 0 バイト
==2238= = 間接的に失われた: 0 ブロックで 0 バイト
==2238== 失われた可能性: 0 ブロックで 0 バイト
==2238== まだ到達可能: 1 ブロックで 1,168 バイト
==2238== 抑制: 0 ブロックで 0 バイト
==2238== --leak-check=full で再実行し、リークしたメモリの詳細を表示
==2238==
==2238== 検出および抑制されたエラーのカウントについては、次を使用して再実行します: -v
==2238== エラーの概要: 0 コンテキストからの 0 エラー (抑制: 8 から 12)
プロファイリング タイマーの期限が切れました

私がプロファイリングしようとしているcコードは次のとおりです。

「プロファイリング タイマーが期限切れになりました」と表示されますが、これはどういう意味ですか? この問題を解決するには?どうも!

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

c++ - 予期しないメモリリーク[Valgrind]

今日、私はvalgrindがどのように機能するかをチェックしようとしていました。そこで、簡単なプログラムを作成しました。

出力は期待どおりでした。メモリリークはないと予想しました。ファイルをコンパイルしleak.Cて実行可能ファイルを生成しましたleak。しかし、次のコマンドを入力するとvalgrind --leak-check=yes --verbose ./leak、びっくりしました。コードにメモリリークがありました。:-o

これは私が得たものです。

コードはどのようにメモリリークしていますか?

編集問題は解決されました。

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

c - 初期化されていない値がヒープ割り当てによって作成されました

私はこのバグを追いかけてきましたが、うまくいきません。基本的なCか何かを忘れましたか?

96行目はパラメーター"char* input"を正常に出力しますが(DEBUG_ON == 1)、105行目はvalgrindエラーを吐き出します(コンソールでは正常に出力されます)。「char*input」は、getline()が入力行を取得することで発生します。この関数の場合、引用符なしの「path / test/path」のようになります。前の関数でうまく印刷して操作できます。「char*inputCopy」について初期化されていないものは何ですか?何か案は?前もって感謝します!

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

linux - Linux でアプリケーションをデバッグするためのリソース使用量を制限する

高負荷時にのみクラッシュする C/C++ アプリケーションがあります。私は通常、valgrind と gprof を使用して、メモリ リークとプロファイリングの問題をデバッグします。失敗率は、100 万回の実行で約 100 回です。これは一貫しています。アプリケーションへのトラフィックを再現するのではなく、何らかの形で valgrind 内で実行されているアプリケーションのデバッグ ビルドに使用できるリソースを表面的に制限できますか?

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

memory-leaks - valgrind内のプロセスにシグナルを送信しますか?

valgrind内で実行されているプロセスにシグナルを送信して、メモリ使用状況を確認するにはどうすればよいですか?

ありがとう!

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

linux - Apachehttpdおよびモジュールでのメモリリークの検索

Apache httpdおよびhttpdモジュールのメモリリークを見つけるための最良の方法は何ですか?

ハウツーはありますか?

valgrindを少し試しましたが、いくつかの障害が発生しました。

  1. Valgrindは、バイナリが正常に終了することを期待しています。私はMaxRequestsPerChildと-Xパラメーターでそれを行うことができました。
  2. Valgrindは、おそらくaprプールに関連していると思われる多くのことについて報告していますが、有用なものは何もありません。

OS:Linux

PS:

Valgrindコマンド:$ valgrind --leak-check=full --leak-resolution=med --log-file=/tmp/valgrind.log ./bin/httpd -X

Valgrindの出力例:http://paste-it.net/public/x5b6e8b/

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

php - Valgrind を使用した PHP メモリ破損のデバッグ

PHP でメモリ破損と思われる問題が発生しています。5.3 ランタイムに移植する大規模なコード ベースがあります。セグメンテーション違反と「zend_mm_heap が壊れています」というエラーが表示されますが、これらのポイントからのバックトレースは役に立ちません。バックトレースは常に、変数の代入や連結など、さまざまなコア PHP 関数に戻ります。

私の知る限りでは、セグメンテーション違反/ヒープ破損エラーが発生する前のある時点で、PHP のメモリが破損しています。

bugs.php.net/bugs-getting-valgrind-log.php の指示に従いましたが、非常に大きな valgrind ログが生成されました。「条件付きのジャンプまたは移動は、初期化されていない値に依存します」などの多くのエラーでいっぱいです。その valgrind ログには非常に多くの情報があるため、何が本当の欠陥で何が正常な動作なのかわかりません。

valgrind の出力の一部を次に示します: http://pastie.org/private/exngtften3jeppqyjn4hw

0 投票する
7 に答える
6679 参照

macos - Snow LeopardでValgrindをコンパイルするにはどうすればよいですか?

Snow LeopardでValgrindをコンパイルするにはどうすればよいですか?