ホームページ >運用・保守 >Linuxの運用と保守 >Linuxでプログラムをデバッグするにはどのような方法がありますか?

Linuxでプログラムをデバッグするにはどのような方法がありますか?

王林
王林オリジナル
2019-12-06 11:01:193857ブラウズ

Linuxでプログラムをデバッグするにはどのような方法がありますか?

#1. 'print' ステートメントを使用する

これは、問題をデバッグするための基本的な方法です。プログラムの実行中のフロー制御の流れと変数値の変化を理解するために、プログラム内の疑わしい場所に print ステートメントを挿入します。

この欠点は、「print」ステートメントを追加してプログラムを編集する必要があり、出力を取得するには再コンパイルして再実行する必要があることです。デバッグが必要なプログラムが比較的大きい場合、これは時間と労力がかかる方法になります。

2. クエリを使用する

場合によっては、カーネルで実行されているプロセスのステータスとメモリ マッピングを把握する必要があります。この情報を取得するために、カーネルにコードを挿入する必要はありません。代わりに、/proc ファイル システムを使用してください。 /procの擬似ファイルシステムには、システム起動時に収集された稼働情報(CPU情報、メモリ容量など)が保持されます。

ls -l /proc の出力は、システム内で実行されているプロセスごとに、/proc ファイル システム内にプロセス ID にちなんだ名前のエントリがあることを示しています。各プロセスの詳細情報は、プロセスIDに対応するディレクトリ内のファイルで取得できます。 「ls /proc/pid」の出力も使用できます。

無料のビデオ チュートリアルの推奨: linux ビデオ チュートリアル

3. トラッキングの使用

strace と ltrace は 2 つのトレース ツールですLinux でプログラムの実行の詳細をトレースするために使用されます。

strace:

strace は、システム コールとシステム コールが受信するシグナルをインターセプトして記録します。ユーザーには、システム コール、システム コールに渡されるパラメータ、および戻り値が表示されます。 strace は、すでに実行中のプロセスまたは新しいプロセスにアタッチできます。これは、開発者やシステム管理者にとっての診断およびデバッグ ツールとして役立ちます。

これは、さまざまなプログラム呼び出しを追跡することによってシステムを理解するためのツールとしても使用できます。このツールの利点は、ソース コードを必要とせず、プログラムを再コンパイルする必要がないことです。

strace を使用するための基本的な構文は次のとおりです。

strace 命令

strace の出力は非常に長いため、通常、表示されるすべての行には興味がありません。 「-e expr」オプションを使用して、不要なデータをフィルタリングできます。

-p pid」オプションを使用して、実行中のプロセスにバインドします。

'-o' オプションを使用すると、コマンドの出力をファイルにリダイレクトできます。

Linuxでプログラムをデバッグするにはどのような方法がありますか?

#strace は、システム コールの出力のみをフィルターします。

ltrace:

ltrace は、プロセスの動的 (ランタイム) ライブラリ呼び出しと受信するシグナルを追跡および記録します。プロセスによって行われるシステムコールを追跡することもできます。使い方は strace と似ています。

ltrace command

'-i' オプションは、ライブラリの呼び出し時に命令ポインタを出力します。

'-S' オプションは、システム コールとライブラリ コールをキャプチャするために使用されます。

Linuxでプログラムをデバッグするにはどのような方法がありますか?

トレースは、'STRCMP' ライブラリ コールの出力をキャプチャします。 。

おすすめの関連記事とチュートリアル: linux チュートリアル

以上がLinuxでプログラムをデバッグするにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。