arm+Linuxプラットフォームでのプロセスのデバッグに問題があります。
これはCAPWAPプロトコルで動作するデーモンプロセスであるため、別のリモートプロセスと継続的に通信します。セグメンテーション違反でクラッシュした場合、私の通常のデバッグ方法はprintf
、を介してログ出力を追加し、プロセスがクラッシュした場所を見つけることですが、あまり効率的ではありません。
この問題をデバッグする他の方法はありますか?
また、 core(5)ダンプを有効gdb
にして、そのコアで事後分析を使用することもできます。
gdb yourprogram core
コアダンプを有効にするには、通常は親プロセス(シェルなど)で、を使用してsetrlimit(2)システムコールを呼び出す必要があります。RLIMIT_CORE
ulimit
gdb
ところで、あなたはまた、を使用してあなたのプログラムを開始することができます
gdb --args yourprogram argtoyourprogram
プログラムをでコンパイルすることを忘れないでくださいgcc -Wall -g
。オプションはほとんどすべての-Wall
警告を出し(非常に便利)、-g
デバッグ情報を生成します。
この場合のデバッグには2つのオプションがあります。
GDBデバッガーを使用してプログラムをデバッグします。GDBを使用して、プログラムにブレークポイントを設定できます。
セグメンテーション違反のデバッグにはAndroid-ndkを使用してください。この種のデバッグは、エラーの正確な場所を提供できます。