2016-05-07 6 views
3

おはよう!Valgrind on FreeBSD

私は1つのCプロジェクトで遊んでいます。これは、FreeBSDのマシン上に配置されて

enter image description here

問題は、私は、メモリリークを見つけるために、Valgrindの中でプロジェクトを実行したいです(それはわからないラズベリーPI2、のように見えます)。私はポートを介してのValgrindをインストールしようとすると、私は次のエラーを取得する:

[email protected]:/usr/ports/devel/valgrind # make 
===> valgrind-3.10.1.20160113,1 is only for i386 amd64, while you are running 
armv6. 
*** Error code 1 

Stop. 
make: stopped in /usr/ports/devel/valgrind 

このプラットフォーム上でvalgrindのを実行するように助けてください。

答えて

6

ARM6/FreeBSDの組み合わせはサポートされていません。

valgrindチームdoesn't support FreeBSD at allと、FreeBSD portを維持している人は、現在のTier 1アーキテクチャであるため、i386とAMD64に制限しています。

ARM用のvalgrindサポートは、ARMがTier 1プラットフォームになるか、誰かがその移植を進めるまで、実装されません。

は移植にもValgrindはチームの文を参照してください:

Maintaining each port takes a lot of effort, more so than for most other programs. Valgrind is fragile due to the low-level nature of what it does. Also, each platform port has CPU-specific code, OS-specific code and platform-specific code, and testing all the combinations is difficult.

更新:あなたは、パフォーマンスの監視とデバッグのための非常に強力なdtraceツールを使用することができFreeBSDでは

。しかし、それは急な学習曲線を持っています。

私のお気に入りのデバッグツールは、依然として戦略的な場所にprintf()を配置しています。大規模なコードブロックでプログラムがクラッシュすると思われるとします。途中にprintfを置き、再コンパイルして再実行します。出力が表示されたら、printfの後にエラーが発生しました。もしあなたがそうでなければ、printfの前にあった。これで、エラーを含むブロックのサイズが半分になりました。残りの疑わしいコードの真ん中にもう一度printfを追加し、繰り返してください。この手法は二分法と呼ばれています。また、変数の値を監視するために使用することもできます。

デバッグ用のprintfをマクロ([1],)にラップすることをお勧めします。コードに残すことはできますが、リリースビルドでは無効にすることができます。

+0

答えに感謝します。だから、FreeBSD/ARMでC言語( 'gdb'を除く)で書かれたプログラムをデバッグするためのオプションはありますか? –

+0

@GeorgeGaál更新された回答を参照してください。 –