Armadilloフォーラム

ArmadilloG3L 自動起動ジョブの状況確認について

mizokawa

2017年12月7日 16時34分

ArmadilloG3Lでrc.localで実行したアプリの実行状況の確認方法について教えて下さい。
C言語のアプリをrootでログインして実行すると正常に動作しますが、rc.localで
バックグラウンドで自動起動すると、実行途中でログ出力が止まってしまいます
(毎回4分14秒後)。 原因がよくわかりません。
プロセスは存在しています。アプリの実行状況、システムログの確認はどうすれば
いいのでしょうか。

コメント

at_syunya.ohshio

2017年12月7日 17時35分

大塩です。

> C言語のアプリをrootでログインして実行すると正常に動作しますが、rc.localで
> バックグラウンドで自動起動すると、実行途中でログ出力が止まってしまいます
> (毎回4分14秒後)。 原因がよくわかりません。
原因判断のため、差し支えなければrc.localとC言語アプリケーションをお送りいただけますでしょうか?
もし不可であるならば、できる範囲で良いのでrc.localに書き込んだ内容とアプリケーションの実装内容をお教えいただけますでしょうか。

またご質問の確認なのですが、「ログ出力」とは「アプリケーションから出力したログ」を指していると認識していますが間違いないでしょうか。

以上です。
よろしくお願いします。

mizokawa

2017年12月7日 18時57分

ご連絡ありがとうございます。

> 大塩です。
>
> > C言語のアプリをrootでログインして実行すると正常に動作しますが、rc.localで
> > バックグラウンドで自動起動すると、実行途中でログ出力が止まってしまいます
> > (毎回4分14秒後)。 原因がよくわかりません。
> 原因判断のため、差し支えなければrc.localとC言語アプリケーションをお送りいただけますでしょうか?
> もし不可であるならば、できる範囲で良いのでrc.localに書き込んだ内容とアプリケーションの実装内容をお教えいただけますでしょうか。

rc.local には下記を追記しました。
cd /home/atmark
/home/atmark/xxx /home/atmark/xxx &

アプリケーションは概要の説明で申し訳ありませんが、USBから入力した
シリアルデータを内部で集計処理し、結果をLighttpdの/var/www/htmlに
出力してグラフ表示するものです。

プログラム開発中の為、バグがあると思われます。バグが時間要因で起きて
いる可能性があるため、ログ停止時点の内部状態などを解析する良い方法を
教えていただきたいと思い質問させて頂きました。

>
> またご質問の確認なのですが、「ログ出力」とは「アプリケーションから出力したログ」を指していると認識していますが間違いないでしょうか。

はい、「ログ出力」は「アプリケーションから出力したログ」のことです。

初歩的な質問で申し訳りません。
よろしくお願い致します。

at_syunya.ohshio

2017年12月8日 9時56分

大塩です。

> rc.local には下記を追記しました。
> cd /home/atmark
> /home/atmark/xxx /home/atmark/xxx &
>
> アプリケーションは概要の説明で申し訳ありませんが、USBから入力した
> シリアルデータを内部で集計処理し、結果をLighttpdの/var/www/htmlに
> 出力してグラフ表示するものです。
>
> プログラム開発中の為、バグがあると思われます。バグが時間要因で起きて
> いる可能性があるため、ログ停止時点の内部状態などを解析する良い方法を
> 教えていただきたいと思い質問させて頂きました。
>
> はい、「ログ出力」は「アプリケーションから出力したログ」のことです。

上記内容でしたら
プログラムの怪しい箇所に「テキストファイルでログを出力する」処理を加えていただき、出力状況を確認してデバッグする方法が一番確実かと思います。
また「gdb」というデバッガがlinuxに標準搭載されているため(Armadilloにはないため,apt-getでインストールの必要があります)、そちらを利用するのも良いかもしれません。

最初にご質問いただいた「アプリの実行状況」の調査につきまして
「strace」というコマンドを用いるとプロセスのシステムコールを追うことができるため、このコマンドから不具合の調査が可能となります。

以上です。
よろしくお願いします。

mizokawa

2017年12月8日 17時05分

ご回答ありがとうございます。

教えて頂いた「strace」で問題箇所の特定ができました。 また、gdbも使って
デバッグしていきたいと思います。

Linuxの基本的な機能の質問で失礼致しました。
ありがとうございました。

> 大塩です。
>
> > rc.local には下記を追記しました。
> > cd /home/atmark
> > /home/atmark/xxx /home/atmark/xxx &
> >
> > アプリケーションは概要の説明で申し訳ありませんが、USBから入力した
> > シリアルデータを内部で集計処理し、結果をLighttpdの/var/www/htmlに
> > 出力してグラフ表示するものです。
> >
> > プログラム開発中の為、バグがあると思われます。バグが時間要因で起きて
> > いる可能性があるため、ログ停止時点の内部状態などを解析する良い方法を
> > 教えていただきたいと思い質問させて頂きました。
> >
> > はい、「ログ出力」は「アプリケーションから出力したログ」のことです。
>
> 上記内容でしたら
> プログラムの怪しい箇所に「テキストファイルでログを出力する」処理を加えていただき、出力状況を確認してデバッグする方法が一番確実かと思います。
> また「gdb」というデバッガがlinuxに標準搭載されているため(Armadilloにはないため,apt-getでインストールの必要があります)、そちらを利用するのも良いかもしれません。
>
> 最初にご質問いただいた「アプリの実行状況」の調査につきまして
> 「strace」というコマンドを用いるとプロセスのシステムコールを追うことができるため、このコマンドから不具合の調査が可能となります。
>
> 以上です。
> よろしくお願いします。