teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

少し追記

2018/03/07 16:10

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -16,4 +16,4 @@
16
16
  ---
17
17
  もし、多くのプログラマーが必要とするような応用分野があるならこうした低水準な機能の上に使いやすいラッパーモジュールとして誰かが既に開発していると思います。そういう観点で探すと見つかるかも知れませんが・・・
18
18
 
19
- はっきりわかりませんが「プログラムの動きを1行ずつ制御する」というのはデバッガーを作るという目的、あるいは何かのテストツール(カバレージ測定とか?)以外で、普通の応用プログラムから利用する場面が思いつきません。探すと見つかるかも知れませんが自分ならcmd.Cmdを調べてちょっとやってみようと考えます。
19
+ はっきりわかりませんが「プログラムの動きを1行ずつ制御する」というのはデバッガーを作るという目的、あるいは何かのテストツール(カバレージ測定とか?)以外で、普通の応用プログラムから利用する場面が思いつきません。探すと見つかるかも知れませんが自分ならcmd.Cmdを調べてちょっとやってみようと考えます。(興味に従って「時間を使ってもあまり気にしない」というアマチュアの感覚で物をいっております)

1

追記

2018/03/07 16:10

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -2,4 +2,18 @@
2
2
 
3
3
  [https://docs.python.org/3/library/pdb.html](https://docs.python.org/3/library/pdb.html)
4
4
 
5
- これみますとデバッガー配下で実行できるので、デバッガーとの対話(stdin/stdout)を自前で制御すればご質問のようなことができる気がします。
5
+ これみますとデバッガー配下で実行できるので、デバッガーとの対話(stdin/stdout)を自前で制御すればご質問のようなことができる気がします。
6
+
7
+ ---
8
+ もう少しリファレンスを見てみましたが、pdb.Pdb、cmd.Cmdクラスのあたりを熟読すれば自前でデバッガーを作ることもできるぐらいの機能があるように思えます(拾い読みなので思えますとしか言えませんが)。
9
+
10
+ > The debugger is extensible – it is actually defined as the class Pdb. This is currently undocumented but easily understood by reading the source. The extension interface uses the modules bdb and cmd.
11
+
12
+ とあり「関連するソースを読めばそう難しくないと思います」だそうです。
13
+
14
+ cmd.Cmdクラスがデバッグ中のプログラムに対して「どう制御したいか」を支配するみたいに思えます。普通のpdbの動きはstdin,stdouを用いて「今どの行で止まったかのメッセージ」をCmdへ伝えCmdはそれをstdoutへ出力した後、stdinからユーザーの指示を読み取りそれが's'(ステップ実行)ならその旨制御するみたいな作りだと思います。stdin,stdoutを使わずCmdが自動的にどう動くべきかを指示するような作りになるでしょうから実際にはstdin/stdoutをどうするかというよりcmd.Cmdの役割(機能)を調べるのがポイントかと思います。
15
+
16
+ ---
17
+ もし、多くのプログラマーが必要とするような応用分野があるならこうした低水準な機能の上に使いやすいラッパーモジュールとして誰かが既に開発していると思います。そういう観点で探すと見つかるかも知れませんが・・・
18
+
19
+ はっきりわかりませんが「プログラムの動きを1行ずつ制御する」というのはデバッガーを作るという目的、あるいは何かのテストツール(カバレージ測定とか?)以外で、普通の応用プログラムから利用する場面が思いつきません。探すと見つかるかも知れませんが自分ならcmd.Cmdを調べてちょっとやってみようと考えます。