Linux環境でpdbを使用してPythonをデバッグする方法
pdb は Python に付属するパッケージで、Python プログラムの対話型ソース コード デバッグ機能を提供します。その主な機能には、ブレークポイントの設定、シングル ステップのデバッグ、関数のデバッグの開始、現在のコードの表示、スタック フラグメントの表示、および動的変更が含まれます。変数の値などpdb は、一般的に使用されるデバッグ コマンドをいくつか提供します。 ️
p 変数 #変数の値を表示
b 行番号 #break ブレークポイントがどの行に設定されているかr pdb test.py
の使用方法を以下に説明します。デバッグ用のデータベース。
リスト 1. テスト コードの例
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
printfinal
リスト2. pdb を使用してデバッグします
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> b = "bbb"
( Pdb ) n
> /root/epdb1.py(5)?()
-> c = "ccc"
(Pdb) > /root/epdb1.py(6)?()
; Final = a + b + c
(Pdb) リスト
1 import pdb
2 a = "aaa"
3 pdb.set_trace() 4 b = "bbb"
5 c = "ccc"
6 -> a + b + c
7 印刷最終
[EOF]
(Pdb)
[EOF]
(Pdb) n
> /root/epdb1.py(7)?()
-> )
変数の値を出力する: デバッグ中に変数の値を出力する必要がある場合は、 p と変数名を直接使用できますが、出力では現在のステートメントの後の特定の値のみが表示されることに注意してください。が実行された場合、NameError:
リスト 3. デバッグプロセス中に変数を出力する
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> bbb"
(Pdb) n
> /root/epdb1.py(5)?()
-> c = "ccc"
(Pdb) p b
'bbb'
(Pdb)
'bbb'
( Pdb) n
> /root/epdb1.py(6)?()
-> Final = a + b + c
(Pdb) p c
'ccc'
(Pdb) p Final
*** NameError:
> /root/epdb1.py(7)?()
-> 最終
'aaabbbccc'
(Pdb)
c を使用して現在のデバッグを停止し、プログラムの実行を継続できるようにします。次のプログラムにさらに set_statement() ステートメントがある場合、リーダーはコードの最終出力の前に set_trace() 検証を追加できます。
リスト 4. デバッグを停止し、プログラムの実行を続行します
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> b = "bbb"
(Pdb) n
> /root/epdb1.py(5)?()
-> c = "ccc"
(Pdb) c
aaabbbccc
コードの表示: 現在のコード ブロックはデバッグ中に記憶されていない場合があります。特定のコード ブロックを表示したい場合は、list または l コマンドを使用して表示できます。 list は、矢印 -> を使用して現在のデバッグ ステートメントを指します。
リスト 6. デバッグプロセス中に表示されるコード
[root@rcc-pok-idg-2255 ~]# python epdb1.py
> /root/epdb1.py(4)?()
-> bbb"
(Pdb) リスト
1 "インポート pdb
2 a = "aaa"
3 pdb.set_trace()
4 -> b = "bbb"
5 c = "ccc"
6 Final = a + b + c
7 pdb.set_trace()
8 最終を印刷
[EOF]
(Pdb) c
> /root/epdb1.py(8)?()
-> 最終を印刷
(Pdb) 3 pdb .set_trace() 4 )
関数を使用したデバッグ
リスト 6. 関数の使用例
import pdb
def combin(s1,s2): # サブルーチン結合を定義します。これは...
s3 = s1 + s2 + s1 # s2 を s1 のコピーの間に挟みます, ...
s3 = '"' + s3 +'"' # 二重引用符で囲みます,...
return s3 #
a = "aaa"
を返します。 pdb.set_trace ()
b = "bbb"
c = "ccc"
Final = combine(a,b)
printfinal
デバッグに n を直接使用すると、次の文が得られます。final=combine(a ,b) これを通常の代入ステートメントとして扱い、print Final と入力します。関数をデバッグしたい場合は、 s を使用して関数ブロックに直接入ることができます。関数のシングルステップ デバッグは、上記の概要と似ています。関数をステップ実行したくない場合は、ブレークポイントで直接 r を押して呼び出し元に戻ることができます。
清单 7. デバッグを実行します
[root@rcc-pok-idg-2255 ~]# python epdb2.py
> /root/epdb2.py(10)?()
-> b = "bbb"
(Pdb) n
> /root/epdb2.py(11)?()
-> c = "ccc"
(Pdb) n
> /root/epdb2.py(12)?()
-> Final = combin(a,b)
(Pdb) s
--Call--
> /root/epdb2.py(3)combine()
-> def combin(s1,s2): # サブルーチン結合を定義します。これは...
(Pdb) n
> /root/epdb2.py(4)combine()
-> s3 = s1 + s2 + s1 # s2 を s1 のコピーの間に挟みます, ...
(Pdb) list
1 import pdb
2
3 def combin(s1,s2): # サブルーチン結合を定義します...
4 -> s3 = s1 + s2 + s1 # s2 を s1 のコピーで挟みます, ...
5 s3 = '"' + s3 +'"' # 二重引用符で囲みます,...
6 return s3 # 返します。
7
8 a = "aaa"
9 pdb.set_trace()
10 b = "bbb"
11 c = "ccc"
(Pdb) n
> /root/epdb2.py(5)combine()
-> s3 = '"' + s3 +'"' # 二重引用符で囲みます...
(Pdb) n
> /root/epdb2.py(6)combine()
-> return s3 # そしてそれを返します。
(Pdb) n
--Return--
> /root/epdb2.py(6)combine()->'"aabbbaaa"'
-> return s3 # そしてそれを返します。
(Pdb) n
> /root/epdb2.py(13)?()
-> print Final
(Pdb)
調整時に値を動的に変更できます。特に次の例のように、次のような制限があることに注意してください。 b の評価値を再変更することを考えています。b を使用してください。关推荐:
Pdb库调试Pythonの方式および常用コマンド
UsePDBモード调试Python程序介绍
以上がLinux環境でpdbを使用してPythonをデバッグする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

Laravelをインストールするには、これらの手順を順番に進みます。コンポーザー(MacOS/LinuxとWindows用)インストールLaravelインストーラーをインストールします。

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。
