質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1214閲覧

プログラムを直接実行しないときのデバッグ

blaku

総合スコア11

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/07/03 00:27

編集2019/07/03 01:14

前提・実現したいこと

プログラムを直接実行しない時のデバッグ方法が知りたいです

発生している問題

pythonで
cronで指定時間に実行するもの
postfixのメール受信をトリガーに動くもの
などを書きました。

これらが直接実行した時と呼び出されたときとで挙動が変わっているようでデバッグがしたいです。
可能ならばステップ実行のような形でやりたいのですがなにか方法はありますでしょうか。

今はソース内に変数の内容などをファイル出力するようにして地道にやってます。

補足情報(FW/ツールのバージョンなど)

python3
ローカル開発環境 Windows7
検証/本番環境 Linux(CentOS) CUI環境

追記

ローカルで書いた後、検証環境で直接実行しPythonのpdbモジュールを使ってデバッグ→問題無し
postfixやcronなどで呼び出す→怪しい挙動 エラーは出ないが想定している値が取れない, 直接実行した時と違う結果になる

CUI上環境で直接実行しない場合のプログラムをステップ実行などでデバッグする方法は無いでしょうか。
また無い場合どういった手法でやるのが正しいでしょうか。
(現在別のファイルに変数値を出力したりしてますがコレは良い手法と言えるのか、他にもっといい方法があるのでしょうか。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/07/03 00:29

pythonはよくわかりませんが、実際に再現確認ができるコードを提示されたほうが良いかと思います。 コードによるものなのか、環境によるものなのか、今の情報だけだと判断しかねる部分があると思います。
t_obara

2019/07/03 00:56

cronでの問題の場合、デバッガで確認する前に、まずはエラーメッセージ等を確認した方がよろしいかと。主要な問題はユーザー権限の違いに起因することが多数ですから。(もちろん単体での動作確認はcronでなくデバッガを利用して問題なく動作することが確認できたことが前提ですが)
yoorwm

2019/07/03 01:12

t_obaraさんやYouheiSakuraiさんの書かれているように、cronで実行する場合は、基本、ログを出力するようにしてソレを確認するような形になりますね。 その前段階として、直接実行してみて動作を確認してから、cronで実行する場合の差異(環境変数の違いなどによる動作の違い)を確認する事になります。 実際に試してみてから、疑問に思った事などを質問するようにすると、具体的なアドバイスを貰える可能性が高いかと思います。
guest

回答3

0

ベストアンサー

そういう時は適切なログを出力するようにして、そのログを読みながら挙動を追うようにします。

投稿2019/07/03 00:54

YouheiSakurai

総合スコア6142

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

blaku

2019/07/11 01:08

こちらの方法で対応, 解決しました。 ありがとうございます。
guest

0

特定の環境で動いているコードをデバッグするということで、広義のリモートデバッグがやりたいのだということになります。

Pythonには公式のリモートデバッグの仕組みがありません。代わりに、IntelliJ(もしくはPyCharm)とVisualStudioCodeという二大開発環境がそれぞれ独自にリモートデバッグの仕組みを用意しています。

面白いことに、この二つのリモートデバッグ機構は接続方向が逆になっています。

まずIntelliJ
https://pleiades.io/help/idea/remote-debugging.html
こちらは、開発環境側でデバッグサーバを立てます。
実行環境側にデバッグライブラリを組み込むと、実行環境の方が開発環境のデバッグサーバにアクセスしてきてリモートデバッグ接続が確立される仕組み。
つながったらあとはステップ実行できます。

次にVisualStudioCode
https://github.com/microsoft/ptvsd
実行環境にptvsdというデバッグライブラリを組み込むと、実行環境側がポートを開けて待ち受けます。そこに開発環境側から接続しに行きます。

投稿2019/07/03 00:52

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

WindowsのVisualStudioで、Pythonのモジュールを入れると、ソースコードデバッグできるようになります

やったことはないですが、Eclipseでも同様なことができたように思います。

「python デバッグ」でぐぐるといろいろでてくるようなんで読んでみてはどうでしょう

投稿2019/07/03 00:35

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問