ホームページ バックエンド開発 Python チュートリアル Linux環境でpdbを使用してPythonをデバッグする方法

Linux環境でpdbを使用してPythonをデバッグする方法

Mar 30, 2018 pm 04:20 PM
linux 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: (Pdb) n
> /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程序介绍

UsePDB简单调试Python程序简明指南

以上がLinux環境でpdbを使用してPythonをデバッグする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

VSCODEに必要なコンピューター構成 VSCODEに必要なコンピューター構成 Apr 15, 2025 pm 09:48 PM

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

Python:自動化、スクリプト、およびタスク管理 Python:自動化、スクリプト、およびタスク管理 Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

VSCODE前の次のショートカットキー VSCODE前の次のショートカットキー Apr 15, 2025 pm 10:51 PM

VSコードワンステップ/次のステップショートカットキー使用法:ワンステップ(後方):Windows/Linux:Ctrl←; macOS:CMD←次のステップ(フォワード):Windows/Linux:Ctrl→; macOS:CMD→

VSCODEでコードを実行する方法 VSCODEでコードを実行する方法 Apr 15, 2025 pm 09:51 PM

コードでコードを実行すると、コードが6つしか必要ありません。1。プロジェクトを開きます。 2。コードファイルを作成して書き込みます。 3.端子を開きます。 4.プロジェクトディレクトリに移動します。 5。適切なコマンドを使用してコードを実行します。 6。出力を表示します。

使用されるVSCODEはどの言語ですか 使用されるVSCODEはどの言語ですか Apr 15, 2025 pm 11:03 PM

Visual Studio Code(VSCODE)はMicrosoftによって開発され、電子フレームワークを使用して構築され、主にJavaScriptで記述されています。 JavaScript、Python、C、Java、HTML、CSSなどを含む幅広いプログラミング言語をサポートし、拡張を通じて他の言語のサポートを追加できます。

vscodeで中国モードを切り替える方法 vscodeで中国モードを切り替える方法 Apr 15, 2025 pm 11:39 PM

vs中国モードを切り替えるコード:設定インターフェイスを開き(Windows/Linux:Ctrl、MacOS:CMD、)[エディター:言語]設定を検索します。ドロップダウンメニューで[中国語]を選択します。

Linuxの主な目的は何ですか? Linuxの主な目的は何ですか? Apr 16, 2025 am 12:19 AM

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

See all articles